La lettura di un oggetto JavaScript
-
08-10-2019 - |
Domanda
Ho il seguente codice in javascript
var result = {
'org.apache.struts' : '4567ty5y7u8j89hjk789',
'firstName' : 'Thorpe',
'surName' : 'Obazee'
}
Quando tento di risultato di lettura:
// this works
sys.puts(result.firstName) // returns Thorpe
sys.puts(result.surName) // returns Obazee
Il problema nasce quando ho letto l'altra proprietà
sys.puts(result.org.apache.struts) // return an error
Errore: Previsto 'TypeError: Impossibile leggere la proprietà 'apache' di non definito
Come devo leggere questo modo che io possa accedere alle informazioni metto?
Soluzione
È possibile utilizzare staffa notazione di proprietà di accesso i cui nomi contenere caratteri non validi per la notazione punto:
result["org.apache.struts"]
Se si desidera aggiungere ulteriori livelli per l'oggetto in modo da poter usare la notazione del punto, è necessario dichiarare un altro oggetto per ogni livello, per esempio:.
var result = {
org: { apache: { struts: '4567ty5y7u8j89hjk789' } },
firstName: 'Thorpe',
surName: 'Obazee'
}
alert(result.org.apache.struts);
Altri suggerimenti
Il problema è che si sta aggiungendo come una chiave insieme, invece di un altro oggetto, l'accesso è come result['org.apache.struts']
.
In alternativa, è possibile modificare il modo in cui si crea risultato:
var result = {
org : {
apache : {
struts : '4567ty5y7u8j89hjk789'
}
}
'org.apache.struts' = '4567ty5y7u8j89hjk789',
'firstName' = 'Thorpe',
'surName' = 'Obazee'
}
Il problema è che la variabile ha punti in esso. Direi che i mandati di javascript che interpretano questo come oggetti nidificati che non sono realmente esistenti. Quindi, l'uso
result["org.apache.struts"]
per ottenere il valore.
Si dovrà usare ':' tra le etichette ei valori dell'oggetto e definire 'org.apache' come un oggetto troppo. In questo modo:
var result = {
org: {apache: {struts: '4567ty5y7u8j89hjk789'}},
firstName: 'Thorpe',
surName: 'Obazee'
}
Se si vuole noi 'org.apache.struts
' come un vero e proprio marchio, la risposta di Andy E è la soluzione.