NEWS
JSON
-
Hallo,
ich bekomme mein Json Object nicht gelesen. Ich weiß nicht wo das Problem liegt.
Ich lade einen Json String von einem meiner Server. Dieser landet in "body".
console.log(body); var data=JSON.parse(body); console.log(data.attributes.ip) var data2=JSON.stringify(data.attributes); console.log(data2);
folgende Fehlermeldung erscheint
javascript.1 script.js.Eigene.Audi: [{"id":264939,"attributes":{"ignition":false,"status":4,"battery":6,"rssi":4,"ip":"2.xxx.xxx.34","distance":0.0,"totalDistance":9554952.72},"deviceId":1,"type":null,"protocol":"gt06","serverTime":null,"deviceTime":"2017-07-12T21:06:43.996+0000","fixTime":"2017-07-12T14:41:50.000+0000","outdated":true,"valid":true,"latitude":xx.x7622222222222,"longitude":xx.x78912222222222,"altitude":0.0,"speed":0.0,"course":248.0,"address":"94A Straße, Berlin, BB, DE","accuracy":0.0,"network":null}] javascript.1 TypeError: Cannot read property 'ip' of undefined at Request.callback [as _callback] (script.js.Eigene.Audi:163:28) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:188:22) at emitTwo (events.js:106:13) at Request.emit (events.js:191:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1171:10) at emitOne (events.js:96:13) at Request.emit (events.js:188:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1091:12) at IncomingMessage.g (events.js:292:16) at emitNone (events.js:91:20)
Ich verstehe nicht wieso ich z.B. das Attribut ip nicht aufgerufen bekomme.
Ich kann das Objekt wieder in Json wandeln. Es funktioniert. Die Daten sind also da. Welche Syntax ist falsch bei mir? Ich finde nichts, was funktioniert im Netz.
Selbst das erste Attribut ID läst sich nicht ansprechen.
var data=JSON.parse(body); console.log(data.id); var data2=JSON.stringify(data.attributes); console.log(data2); var data2=JSON.stringify(data); console.log(data2)
23:15:33.019 [info] javascript.1 script.js.Eigene.Audi: [{"id":264940,"attributes":{"ignition":false,"status":4,"battery":6,"rssi":4,"ip":"2.xxx.xxx.34","distance":0.0,"totalDistance":9554952.72},"deviceId":1,"type":null,"protocol":"gt06","serverTime":null,"deviceTime":"2017-07-12T21:11:44.018+0000","fixTime":"2017-07-12T14:41:50.000+0000","outdated":true,"valid":true,"latitude":xx.x7622222222222,"longitude":xx.x78912222222222,"altitude":0.0,"speed":0.0,"course":248.0,"address":"94A Straße, Berlin, BB, DE","accuracy":0.0,"network":null}] 23:15:33.020 [info] javascript.1 script.js.Eigene.Audi: undefined 23:15:33.021 [info] javascript.1 script.js.Eigene.Audi: undefined 23:15:33.021 [info] javascript.1 script.js.Eigene.Audi: [{"id":264940,"attributes":{"ignition":false,"status":4,"battery":6,"rssi":4,"ip":"2.xxx.xxx.34","distance":0,"totalDistance":9554952.72},"deviceId":1,"type":null,"protocol":"gt06","serverTime":null,"deviceTime":"2017-07-12T21:11:44.018+0000","fixTime":"2017-07-12T14:41:50.000+0000","outdated":true,"valid":true,"latitude":xx.x7622222222222,"longitude":xx.x78912222222222,"altitude":0,"speed":0,"course":248,"address":"94A Straße,Berlin, BB, DE","accuracy":0,"network":null}]
Kann mir jemand helfen und sagen, wo mein Fehler liegt?
-
Hi Roland
Bin gerade auf Handy unterwegs Bisse schwer lesen, hilft dir dieser Post vielleicht?
http://forum.iobroker.net/viewtopic.php?t=7204
Ich verstehe nicht ganz warum du Attribute.xx JSON Wert nimmst
Edit: Ah sorry du hast in einen object mehrere Werte lese ich jetzt erst, muss dan jetzt handtuch werfen sorry für den nutzlosen Post
–-----------------------
Send from mobile device
-
Das sieht nach einem Array mit einem Element aus [eckige Klammer). Versuche es mal so:
console.log(data[0].attributes.ip)
-
Danke.
Das funktioniert.
Ich habe nach bestem wissen nach der korrekten Syntax gesucht data[0] in eckige Klammer zu setzen habe ich nicht vericht. Ich habe runden klammern verwendet.
Jetzt komme ich weiter.
Prima.