Frage

Ich habe den folgenden Code in Javascript

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

Wenn ich versuche Ergebnis zu lesen:

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

Das Problem kommt, wenn ich lese, die andere Eigenschaft

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

Fehler: Erwartete ‚Typeerror: Kann nicht Lesen Eigenschaft 'Apache' undefinierter

Wie soll ich diese Zeilen lesen, so dass ich auf die Informationen zugreifen kann ich setzen?

War es hilfreich?

Lösung

Sie können mit Dirac-Notation Zugriffseigenschaften, deren Namen Zeichen enthalten, ungültig für Punktnotation:

result["org.apache.struts"]

Wenn Sie weitere Ebene zu Ihrem Objekt hinzufügen mögen, so dass Sie Punktnotation verwenden können, müssen Sie ein anderes Objekt für jede Ebene erklären, z.

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

alert(result.org.apache.struts);

Andere Tipps

Das Problem ist, dass man es als Ganzes Schlüssel anstelle eines anderen Objekts, greifen Sie wie result['org.apache.struts'] sind hinzuzufügen.

Sie können auch die Art und Weise Sie Ergebnis erstellen ändern:

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

Das Problem ist, dass Ihre variable Punkte in ihm hat. Ich würde, dass Javascript Mandate denkt, das als verschachtelte Objekte zu interpretieren, die nicht wirklich existieren. So verwenden

result["org.apache.struts"]

, um den Wert zu erhalten.

Sie werden zum Gebrauch haben ‚:‘ zwischen den Etiketten und Werten des Objekts und definieren ‚org.apache‘ als auch Objekt. Wie folgt aus:

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

Wenn Sie uns ‚org.apache.struts‘ als echtes Label wollen, Antwort Andy E ist die Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top