NEWS
JSON Daten auslesen
-
Danke, scheint zu funktionieren.
Wie erzeuge ich nun Einträge unter den Objekten, die ich dann weiterverwenden kann?
-
Hallo,
createState() und setState() sind die Befehle. Ich empfehle dir diese Dokumentation
http://www.iobroker.net/docu/?page_id=2786&lang=de
und speziell http://www.iobroker.net/docu/?page_id=5385&lang=de
Einführung in die Programmierung mit JavaScript
Ebenso den Blick in andere Skripte hier im Forum.
Pix
-
Common oder Global Script?
Das hier geht nicht…
var request = require('request');
function versionen() {
request('http://x.x.x.x/json', function(error,response, body) {
if(error) log('Fehler request: ' + error, 'error');
else {
var obj = JSON.parse(body);
log('Hardware-Version' + obj.Hardware-Version);
log('Firmware-Version' + obj.Firmware-Version);
}
});
}
versionen(); // Skriptstart
-
-
Bekomme folgende Fehler…
13:11:26.315 javascript.0 Start javascript script.js.Scripts.Skript1
13:11:26.316 javascript.0 script.js.Scripts.Skript1: registered 0 subscriptions and 0 schedules
13:11:26.354 javascript.0 ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:186:22) at emitTwo (events.js:126:13) at Request.emit (events.js:214:7) at Request. (/opt/iobroker/node_modules/request/request.js:1163:10) at emitOne (events.js:116:13) at Request.emit (events.js:211:7) at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1085:12) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20)
13:11:26.384 Caught by controller[0]: at Request._callback (script.js.Scripts.Skript1:9:51)
-
ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) `
In meinem Skript gibt es keine Zeichenpostion 51 in Zeile 9. Sorry, habe meine Glaskugel verlegt.Bitte Programm-Code und Log-Ausgaben in Code tags (5. Button ) posten !
-
Hier der Code…
var request = require('request'); function versionen() { request('http://192.168.178.21/json', function(error,response, body) { if(error) log('Fehler request: ' + error, 'error'); else { var obj = JSON.parse(body); log('Hardware-Version' + obj.Hardware-Version); log('Firmware-Version' + obj.Firmware-Version); } }); } versionen(); // Skriptstart
Und hier das Log dazu…
07:34:07.094 [info] javascript.0 Stop script script.js.Scripts.Skript1 07:51:45.909 [info] javascript.0 Start javascript script.js.Scripts.Skript1 07:51:45.909 [info] javascript.0 script.js.Scripts.Skript1: registered 0 subscriptions and 0 schedules 07:51:45.974 [error] javascript.0 ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:186:22) at emitTwo (events.js:126:13) at Request.emit (events.js:214:7) at Request. (/opt/iobroker/node_modules/request/request.js:1163:10) at emitOne (events.js:116:13) at Request.emit (events.js:211:7) at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1085:12) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20) 07:51:46.004 [error] Caught by controller[0]: at Request._callback (script.js.Scripts.Skript1:9:51)
-
Randbemerkung für JavaScript -> Objektbezeichner, Funktionen, Variablen. Bei selbst vergebenen Namen gelten folgende Regeln:
sie dürfen keine Leerzeichen enthalten
sie dürfen nur aus Buchstaben und Ziffern bestehen - das erste Zeichen muss ein Buchstabe sein; es sind Groß- und Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden!
sie dürfen keine deutschen Umlaute oder scharfes S enthalten
sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten
sie dürfen nicht mit einem reservierten Wort identisch sein.
-
sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten `
Stimmt, - ist nicht zulässig. Bei unzulässigen Bezeichnern muss man eine andere Schreibweise verwenden.log('Hardware-Version ' + obj['Hardware-Version']); log('Firmware-Version ' + obj['Firmware-Version']);
-
Bei selbst vergebenen Namen gelten folgende Regeln:
Die Regeln sind nicht ganz korrekt. Genauer:
Ein Bezeichner darf nur aus Buchstaben, Dezimalziffern (0-9), dem Dollarzeichen ($) sowie dem Unterstrich (_) bestehen. Jedes dieser Zeichen darf an beliebiger Stelle vorkommen, mit Ausnahme der Ziffern, welche nicht an erster Stelle stehen dürfen. Groß- und Kleinbuchstaben werden unterschieden. Bezeichner dürfen nicht mit einem reservierten Wort identisch sein.
-
Da war selfHTML (Quelle) wohl etwas lax. Einfach das $ zu unterschlagen
-
Da war selfHTML (Quelle) wohl etwas lax. `
Ja. https://molily.de/js/variablen.html#bezeichner. -
Sehe schon Code wie „ein[emoji813]FürTiere“ vor mir. Wäre lustig mit Emoticons … [emoji12]
-
Sehe schon Code wie „ein[emoji813]FürTiere“ vor mir. Wäre lustig mit Emoticons … [emoji12] `
Auch wenn es in JSON nicht erlaubt ist, als Variablenname geht sowas… (bitte nicht!)
https://mathiasbynens.be/notes/javascript-identifiers
The following are all examples of valid JavaScript variable names. // How convenient! var π = Math.PI; // Sometimes, you just have to use the Bad Parts of JavaScript: var ಠ_ಠ = eval; // Code, Y U NO WORK?! var ლ_ಠ益ಠ_ლ = 42; // How about a JavaScript library for functional programming? var λ = function() {}; // Obfuscate boring variable names for great justice var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh'; // …or just make up random ones var Ꙭൽↈⴱ = 'huh'; // While perfectly valid, this doesn’t work in most browsers: var foo\u200Cbar = 42; // This is *not* a bitwise left shift (`<<`): var 〱〱 = 2; // This is, though: 〱〱 << 〱〱; // 8 // Give yourself a discount: var price_9̶9̶_89 = 'cheap'; // Fun with Roman numerals var Ⅳ = 4; var Ⅴ = 5; Ⅳ + Ⅴ; // 9 // Cthulhu was here var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo';
-
Wenn alle Unicode-Buchstaben erlaubt sind warum klappt es dann mit dem - beim Objekt-Property nicht? - ist kein Buchstabe? Liegt’s am JSON.parse()?
-
- ist kein Buchstabe? `
Richtig. - ist ein unerlaubtes Sonderzeichen.
- ist kein Buchstabe? `
-
Wenn alle Unicode-Buchstaben erlaubt sind warum klappt es dann mit dem - beim Objekt-Property nicht? - ist kein Buchstabe? Liegt’s am JSON.parse()? `
- ist ein Minus.
Wäre es erlaubt, könnte JS nicht wissen, ob du mit - einen Teil der Eigenschaft meinst oder subtrahieren willst:
obj.lange-eigenschaft; // (obj.lange minus eigenschaft) oder (ist eigenschaft Teil des Namens)?
-
Super Erklärung für Ingo1977. Hoffentlich liest er noch mit