Question

Je le code suivant dans javascript

var result = {
    'org.apache.struts' : '4567ty5y7u8j89hjk789',
    'firstName' : 'Thorpe',
    'surName' : 'Obazee'
}

Lorsque je tente de lire le résultat:

// this works
sys.puts(result.firstName) // returns Thorpe
sys.puts(result.surName) // returns Obazee

Le problème vient quand je lis l'autre propriété

sys.puts(result.org.apache.struts) // return an error
  

Erreur: attendu « TypeError: Impossible   lire la propriété 'apache' undefined

Comment dois-je lire ce que je puisse accéder à l'information que je mets?

Était-ce utile?

La solution

Vous pouvez utiliser notation support pour accéder aux propriétés dont les noms contenir des caractères non valides pour la notation point:

result["org.apache.struts"]

Si vous voulez ajouter des niveaux supplémentaires à votre objet afin que vous puissiez utiliser la notation par points, vous devez déclarer un autre objet pour chaque niveau, par exemple:.

var result = {
    org: { apache: { struts: '4567ty5y7u8j89hjk789' } },
    firstName: 'Thorpe',
    surName: 'Obazee'
}

alert(result.org.apache.struts);

Autres conseils

Le problème est que vous ajoutez comme une clé entière au lieu d'un autre objet, comme l'accès result['org.apache.struts'].

Ou vous pouvez changer la façon dont vous créez résultat:

var result = {
    org : {
        apache : {
            struts : '4567ty5y7u8j89hjk789'
        }
    }
    'org.apache.struts' = '4567ty5y7u8j89hjk789',
    'firstName' = 'Thorpe',
    'surName' = 'Obazee'
}

Le problème est que votre variable comporte des points en elle. Je suppose que les mandats javascript interprétation ce que les objets imbriqués qui ne sont pas vraiment existants. Ainsi, l'utilisation

result["org.apache.struts"]

pour obtenir la valeur.

Vous devrez utiliser « : » entre les étiquettes et les valeurs de l'objet et de définir « org.apache » comme un objet aussi. Comme ceci:

var result = {
    org: {apache: {struts: '4567ty5y7u8j89hjk789'}},
    firstName: 'Thorpe',
    surName: 'Obazee'
}

Si vous voulez un véritable label pour nous 'org.apache.struts', la réponse de Andy E est la solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top