NEWS
JSON - mal wieder
-
Grüß Euch!
In einem Datenpunkt steht folgender JSON String:
script.js.Zeug.MeteoAlarm: [{"Event":"Windwarnung","Description":"Starker Wind mit Spitzen von 60 bis 80 km/h ist zu erwarten.","Level":2,"Effective":"Mo. 00:00 - Di. 00:00","Icon":"/meteoalarm.admin/icons/black/t1.png","AlarmType":"Wind"}]
Ich möchte zB das Event auslesen:
Ich hab schon viele Variationen probiert, nichts klappt. Und ja, ich hab im Forum gesucht und gegoogelt.
Ein anders Beispiel, auch hier wird nichts ausgegeben. Hat jemand einen Tipp? Im schlimmsten Fall hole ich mir die Werte über Stringsearch.
Danke Euch, Andiconst jsonString = '{ "id": 100, "tC": "18", "tF": 65.3 }'; // Parse the JSON string const jsonData = JSON.parse(jsonString); // Extract the value of tC let temperatureCelsius = jsonData.tC; // Check if tC is a string and convert it to a number if (typeof temperatureCelsius === "string") { const parsedValue = parseFloat(temperatureCelsius); if (!isNaN(parsedValue)) { temperatureCelsius = parsedValue; } else { console.error("Invalid temperature value in tC"); } } console.log("Temperature in Celsius:", temperatureCelsius);
-
@gukerl wieso 1.Event?
0.Event müsste passen
steht die Einleitung vor der öffnenden eckigen Klammer tatsächlich im DP?
das darf nicht -
@homoran
So ist es im Adapter drinnen:[ { "Event": "Windwarnung", "Description": "Starker Wind mit Spitzen von 60 bis 80 km/h ist zu erwarten.", "Level": 2, "Effective": "Mo. 00:00 - Di. 00:00", "Icon": "/meteoalarm.admin/icons/black/t1.png", "AlarmType": "Wind" } ]
Es klappt garnichts:
Für mich ist eigentlich das Beispiel wichtig:
Vom Shelly bekomme ich diesen JSON im Datenpunkt:{ "id": 101, "tC": 16.7, "tF": 62 }
Auch hier keine Chance (im Startpost das JS). Ich hab Variationen probiert. Debug zeigt garnichts an.
Entweder passt mit meinem Adapter was nicht oder...? Keine Ahnung.
-
@gukerl mangels Adapter-DP eine Variable mit dem I halt:
und
-
@gukerl sagte in JSON - mal wieder:
Ich hab schon viele Variationen probiert, nichts klappt
Du hast die "richtige" Variante vergessen: Indizes in JSON-Arrays beginnen bei
0
.Wie @Homoran schon schrieb: Das funzt einwandfrei:
Vom Shelly bekomme ich diesen JSON im Datenpunkt:
Das wiederum ist kein Array. Also wird ohne Index gelesen:
JSON.parse(val).tC
Ich persönlich würde mir da passende Alias-DP anlegen und mit der Lesekonvertierung die Werte aus dem JSON holen.
-
@codierknecht sagte in JSON - mal wieder:
Ich persönlich würde mir da passende Alias-DP anlegen und mit der Lesekonvertierung die Werte aus dem JSON holen.
rischtisch, aber hier geht's um Blockly.
Oftmals sind solche Dinge, die auch anders lösbar sind, dazu da um sich mit Blockly vertraut zu machen
-
@Gukerl
Zum Ausprobieren hilft das hier: https://jsonpathfinder.com/Der sagt Dir auch gleich, wie einzelne Elemente anzusprechen sind.
-
@codierknecht sagte in JSON - mal wieder:
Das wiederum ist kein Array. Also wir ohne Index gelesen:
Editör!
Deswegen hatte ich die Seite von jsonviewer.stack.hu gezeigt auf der man schön die Struktur sehen kann.
-
@homoran sagte in JSON - mal wieder:
Editör!
Sorry
Macht der jsonpathfinder auch. Netterweise zeigt der auch gleich (fast) die richtige Syntax für den Zugriff
Jeder hat da halt so seine Vorlieben
-
Ich hab jetzt ChatGPT befragt, wie denn die KI das auflöst, so stehts im Datenpunkt:
{ "id": 100, "tC": 17.1, "tF": 62.8 }
Klappt nicht, der https://jsonviewer.stack.hu/ zeigt keinen Index.
const jsonString = '{ "id": 100, "tC": 18.5, "tF": 65.3 }'; // Parse the JSON string const jsonData = JSON.parse(jsonString); // Extract the value of tC const temperatureCelsius = jsonData.tC; console.log("Temperature in Celsius:", temperatureCelsius);
Ich gebe auf
und frag mich, wofür das ganze JSON Zeig im Blockly denn dann gut sein soll. Nachdem es aber mit JS auch nicht geht...?!?
-
@gukerl sagte in JSON - mal wieder:
zeigt keinen Index
Warum auch? Ist ja kein Array.
Über einen Index greifst Du auf ein Array mit Objekten zu.Beachte den Unterschied:
const jsonString = '{"id": 100, "tC": 18.5, "tF": 65.3}'; const jsonArray = '[{"id": 100, "tC": 18.5, "tF": 65.3}, {"id": 101, "tC": 18.9, "tF": 61.2}]';
In
jsonString
steckt ein einzelnes Objekt. Auf dessen Properties kannst Du direkt zugreifen.
DasjsonArray
ist eine Liste von Objekten. Da muss über den Index angegeben werden, das wievielte Objekt in der Liste gemeint ist.
Beachte: Der Index beginnt bei "0"!Edit
Ein Array erkennst Du daran, dass "außenrum" eckige Klammern zu finden sind.
Wie viele Elemente (Objekte) dann in der Liste stehen, ist egal. Der Zugriff benötigt einen Index - auch bei nur einem einzigen Objekt. -
@gukerl sagte in JSON - mal wieder:
Nachdem es aber mit JS auch nicht geht...?!?
Der Code funktioniert einwandfrei ... wenn man den Fehler an entscheidender Stelle korrigiert:
-
@gukerl sagte in JSON - mal wieder:
Ich gebe auf und frag mich, wofür das ganze JSON Zeig im Blockly denn dann gut sein soll
Aufgeben ist keine Option
Es gilt - wie immer: Kaum macht man's richtig, funktioniert's auch -
@gukerl sagte in JSON - mal wieder:
der https://jsonviewer.stack.hu/ zeigt keinen Index.
natürlich nicht!
ist hier auch nicht drin
nur das Attribut selber.@gukerl sagte in JSON - mal wieder:
Ich hab jetzt ChatGPT befragt,
reichen dir unsere Aussagen und Beispiele nicht?
-
@codierknecht
Oidaaaaaaa.... ICH BIN WIRKLICH BLIND - Asche auf mein Haupt!! Das passiert, wenn man sich ganz woandershin konzentriert.Danke
P.S. Was bedeutet Oidaaaaaa ---> https://www.youtube.com/watch?v=iuXR53ex4iI
-
@gukerl sagte in JSON - mal wieder:
Was bedeutet Oidaaaaaa
Ich bin des Ausländischen durchaus mächtig