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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top