La lecture d'un objet Javascript
-
08-10-2019 - |
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?
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.