2016-08-18 6 views
0

Hier ist meine JSON:Parsing JSON - Javascript - Nicht definiert

[ 
    { 
    "0": "324", 
    "1": "Cavill ", 
    "2": "11", 
    "3": "100018463", 
    "4": "RAR", 
    "5": "DummyX", 
    "6": "DummyY", 
    "7": "Moretext", 
    "8": "moretext", 
    "id": "lol", 
    "teacher": "Specsavers ", 
    "rate": "11", 
    "teacherid": "100018463", 
    "address": "114 Road X", 
    "postcode": "WXER 21", 
    "lat": "51.511871", 
    "lon": "-0.112934", 
    "distance": "0.023308985382378217" 
    } 
] 

Diese in einer Variablen "halten" genannt gehalten wird.

Ich versuche, "Lehrer" in einem div namens output1 ausgeben.

Hier ist mein Code:

obj = JSON.parse(hold); 
document.getElementById("output1").innerHTML = obj[1].teacher; 

ich nicht definiert werde immer.

Ich habe versucht, 1 zu 0 zu ändern. Gleiches Problem - undefined.

Was mache ich hier falsch?

Wie kann ich auf Attributdaten von jedem Knoten/Zweig zugreifen?

+0

Ihre JSON innerhalb eines Array ist, so verwenden 'obj = JSON.parse (hold [0]);' – Pugazh

+2

Sie haben wirklich ein JSON ** Zeichenfolge **? –

+0

@Pugazh Was ?! Nein. "Halten" wäre (sollte) eine Zeichenfolge. – Biffen

Antwort

2

Index beginnt bei 0 und in Ihrem Datenindex 1 ist undefined.

obj = JSON.parse(hold); 
document.getElementById("output1").innerHTML = obj[0].teacher; 
//------------------------------------------------^^^------ 
1

Stellen Sie sicher, dass hold tatsächlich eine JSON-Zeichenfolge ist. Und die Art, wie Sie auf den geparsten JSON zugreifen, ist falsch, es sollte 0 sein, da es nur einen JSON-String gibt.

var hold = '[ { "0": "324","1": "Cavill ","2": "11", "3": "100018463", "4": "RAR", "5": "DummyX","6": "DummyY","7": "Moretext", "8": "moretext","id": "lol","teacher": "Specsavers ", "rate": "11","teacherid": "100018463", "address": "114 Road X", "postcode": "WXER 21","lat": "51.511871","lon": "-0.112934", "distance": "0.023308985382378217" }]'; 
 
var obj = JSON.parse(hold); 
 
document.getElementById('output1').innerHTML = obj[0].teacher;
<div id="output1"></div>

0

Array-Index geht von . In Ihrem geparsten JSON steht obj[0] für das erste Element. Da es kein zweites Element gibt, wird obj[1]undefined sein.

Verwenden Sie obj[0] statt obj[1].

Arbeits Code:

var hold = '[{ "0": "324", "1": "Cavill ", "2": "11", "3": "100018463", "4": "RAR", "5": "DummyX", "6": "DummyY", "7": "Moretext", "8": "moretext", "id": "lol", "teacher": "Specsavers ", "rate": "11", "teacherid": "100018463", "address": "114 Road X", "postcode": "WXER 21", "lat": "51.511871", "lon": "-0.112934", "distance": "0.023308985382378217"}]'; 
 

 
var obj = JSON.parse(hold); 
 
document.getElementById("output1").innerHTML = obj[0].teacher;
<div id="output1"></div>