NEWS
JSON Format aus SimpleAPI Adapter
-
Hallo Freunde,
ich speichere einen JSON String im Datenpunkt der richtig geschrieben wird:
{ "data": [ { "temperaturaussen": 9, "feuchtaussen": 87.54, "temperaturwohnzimmer": 21, "feuchtwohnzimmer": 56.98, "temperaturbadezimmer": 21, "feuchtbadezimmer": 60.79, "davefeucht": 58, "daveduenger": 1345, "udofeucht": 50, "udoduenger": 294 } ] }Über getPlainValue im Simple Adapter bekomme ich jedoch folgenden Output:
"{\"data\":[{\"temperaturaussen\":9,\"feuchtaussen\":87.54,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":56.98,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":60.79,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}]}"Kann mir jemand erklären wo die \ herkommen ?
Ich schreibe den Datenpunkt über folgendes Script
setState("javascript.0.EigeneDatenpunkte.Daten", { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] });Grüße und Danke
-
Hallo Freunde,
ich speichere einen JSON String im Datenpunkt der richtig geschrieben wird:
{ "data": [ { "temperaturaussen": 9, "feuchtaussen": 87.54, "temperaturwohnzimmer": 21, "feuchtwohnzimmer": 56.98, "temperaturbadezimmer": 21, "feuchtbadezimmer": 60.79, "davefeucht": 58, "daveduenger": 1345, "udofeucht": 50, "udoduenger": 294 } ] }Über getPlainValue im Simple Adapter bekomme ich jedoch folgenden Output:
"{\"data\":[{\"temperaturaussen\":9,\"feuchtaussen\":87.54,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":56.98,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":60.79,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}]}"Kann mir jemand erklären wo die \ herkommen ?
Ich schreibe den Datenpunkt über folgendes Script
setState("javascript.0.EigeneDatenpunkte.Daten", { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] });Grüße und Danke
-
@bobby sagte in JSON Format aus SimpleAPI Adapter:
Kann mir jemand erklären wo die \ herkommen ?
Das JSON wird in einen String umgewandelt. Damit das wieder ein JSON wird musst du den String mit JSON.parse(string) umwandeln.
@jey-cee Ich möchte die Werte gerne in Android Studio benutzen.
Wenn ich
val dataJson = JSONObject(jsonstring)versuche bekomme ich folgende Fehlermeldung
org.json.JSONException: Value {"data":[{"temperaturaussen":14,"feuchtaussen":76.75,"temperaturwohnzimmer":21,"feuchtwohnzimmer":56.65,"temperaturbadezimmer":21,"feuchtbadezimmer":60.02,"davefeucht":58,"daveduenger":1345,"udofeucht":50,"udoduenger":294}]} of type java.lang.String cannot be converted to JSONObject -
Hallo Freunde,
ich speichere einen JSON String im Datenpunkt der richtig geschrieben wird:
{ "data": [ { "temperaturaussen": 9, "feuchtaussen": 87.54, "temperaturwohnzimmer": 21, "feuchtwohnzimmer": 56.98, "temperaturbadezimmer": 21, "feuchtbadezimmer": 60.79, "davefeucht": 58, "daveduenger": 1345, "udofeucht": 50, "udoduenger": 294 } ] }Über getPlainValue im Simple Adapter bekomme ich jedoch folgenden Output:
"{\"data\":[{\"temperaturaussen\":9,\"feuchtaussen\":87.54,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":56.98,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":60.79,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}]}"Kann mir jemand erklären wo die \ herkommen ?
Ich schreibe den Datenpunkt über folgendes Script
setState("javascript.0.EigeneDatenpunkte.Daten", { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] });Grüße und Danke
@bobby sagte: Ich schreibe den Datenpunkt über folgendes Script
Damit wird ein Objekt in den Datenpunkt geschrieben. Für ein JSON braucht es JSON.stringify(obj).
setState("javascript.0.EigeneDatenpunkte.Daten", JSON.stringify( { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] } )); -
@bobby sagte: Ich schreibe den Datenpunkt über folgendes Script
Damit wird ein Objekt in den Datenpunkt geschrieben. Für ein JSON braucht es JSON.stringify(obj).
setState("javascript.0.EigeneDatenpunkte.Daten", JSON.stringify( { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] } ));Ich bekomme ja den richtigen String ausgelesen.
V/JSON: "{\"temperaturaussen\":13,\"feuchtaussen\":77.18,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":57.5,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":63.18,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}"Nur wenn ich ihn verarbeiten will bekomme ich eine Fehlermeldung:
Log.v("JSON",fullJson); val dataJson = JSONObject(fullJson)of type java.lang.String cannot be converted to JSONObject -
Ich bekomme ja den richtigen String ausgelesen.
V/JSON: "{\"temperaturaussen\":13,\"feuchtaussen\":77.18,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":57.5,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":63.18,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}"Nur wenn ich ihn verarbeiten will bekomme ich eine Fehlermeldung:
Log.v("JSON",fullJson); val dataJson = JSONObject(fullJson)of type java.lang.String cannot be converted to JSONObject@bobby sagte in JSON Format aus SimpleAPI Adapter:
JSONObject
kannst du den string nicht vorher bearbeiten und alle schrägstriche entfernen - bin sicher java kann das
bevor du JSONObject(fullJson)
ausführstirgendwie so: str.replaceAll("\", "")); oder str.replaceAll("\\", "")) -
@jey-cee Ich möchte die Werte gerne in Android Studio benutzen.
Wenn ich
val dataJson = JSONObject(jsonstring)versuche bekomme ich folgende Fehlermeldung
org.json.JSONException: Value {"data":[{"temperaturaussen":14,"feuchtaussen":76.75,"temperaturwohnzimmer":21,"feuchtwohnzimmer":56.65,"temperaturbadezimmer":21,"feuchtbadezimmer":60.02,"davefeucht":58,"daveduenger":1345,"udofeucht":50,"udoduenger":294}]} of type java.lang.String cannot be converted to JSONObject@bobby sagte in JSON Format aus SimpleAPI Adapter:
@jey-cee Ich möchte die Werte gerne in Android Studio benutzen.
Wenn ich
val dataJson = JSONObject(jsonstring)versuche bekomme ich folgende Fehlermeldung
org.json.JSONException: Value {"data":[{"temperaturaussen":14,"feuchtaussen":76.75,"temperaturwohnzimmer":21,"feuchtwohnzimmer":56.65,"temperaturbadezimmer":21,"feuchtbadezimmer":60.02,"davefeucht":58,"daveduenger":1345,"udofeucht":50,"udoduenger":294}]} of type java.lang.String cannot be converted to JSONObjectDiesem Artikel nach müsste der richtige Befehl wie folgt lauten
JSONObject dataJson = new JSONObject(jsonstring);https://stackoverflow.com/questions/18192891/conversion-from-string-to-json-object-android
-
@bobby sagte in JSON Format aus SimpleAPI Adapter:
@jey-cee Ich möchte die Werte gerne in Android Studio benutzen.
Wenn ich
val dataJson = JSONObject(jsonstring)versuche bekomme ich folgende Fehlermeldung
org.json.JSONException: Value {"data":[{"temperaturaussen":14,"feuchtaussen":76.75,"temperaturwohnzimmer":21,"feuchtwohnzimmer":56.65,"temperaturbadezimmer":21,"feuchtbadezimmer":60.02,"davefeucht":58,"daveduenger":1345,"udofeucht":50,"udoduenger":294}]} of type java.lang.String cannot be converted to JSONObjectDiesem Artikel nach müsste der richtige Befehl wie folgt lauten
JSONObject dataJson = new JSONObject(jsonstring);https://stackoverflow.com/questions/18192891/conversion-from-string-to-json-object-android
-
@oliverio Ich bin dabei meine eigene Smart Home App zu schreiben, dafür benutze ich Kotlin.
Da gibt es leider
JSONObject dataJson = new JSONObject(jsonstring);nicht, nur
val dataJson = JSONObject(jsonstring)Wenn ich den Datenpunkt als String speichere, z.B. so
setState("javascript.0.EigeneDatenpunkte.Wandtablet_Daten", "data: [{tempaussen: 42, tempwohnzimmer: 39}]")Und dann ein Json Objekt erstelle
val dataJson = JSONObject("{" + fullJson.substring(1, fullJson.length -1) + "}")indem ich Klammern wieder einfüge funktioniert es zwar, aber das scheint mir irgendwie nicht des Rätsels Lösung zu sein.
Wirkt auch einfach zu umständlich. -
Hallo Freunde,
ich speichere einen JSON String im Datenpunkt der richtig geschrieben wird:
{ "data": [ { "temperaturaussen": 9, "feuchtaussen": 87.54, "temperaturwohnzimmer": 21, "feuchtwohnzimmer": 56.98, "temperaturbadezimmer": 21, "feuchtbadezimmer": 60.79, "davefeucht": 58, "daveduenger": 1345, "udofeucht": 50, "udoduenger": 294 } ] }Über getPlainValue im Simple Adapter bekomme ich jedoch folgenden Output:
"{\"data\":[{\"temperaturaussen\":9,\"feuchtaussen\":87.54,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":56.98,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":60.79,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}]}"Kann mir jemand erklären wo die \ herkommen ?
Ich schreibe den Datenpunkt über folgendes Script
setState("javascript.0.EigeneDatenpunkte.Daten", { data: [{ temperaturaussen: getState("javascript.0.EigeneDatenpunkte.TemperaturBalkon").val, feuchtaussen: getState("deconz.0.Sensors.10.humidity").val, temperaturwohnzimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturWohnzimmer").val, feuchtwohnzimmer: getState("deconz.0.Sensors.13.humidity").val, temperaturbadezimmer: getState("javascript.0.EigeneDatenpunkte.TemperaturBadezimmer").val, feuchtbadezimmer: getState("deconz.0.Sensors.16.humidity").val, davefeucht: getState("ble.0.c4:7c:8d:6d:c3:63.moisture").val, daveduenger: getState("ble.0.c4:7c:8d:6d:c3:63.fertility").val, udofeucht: getState("ble.0.c4:7c:8d:6d:c3:7d.moisture").val, udoduenger: getState("ble.0.c4:7c:8d:6d:c3:7d.fertility").val }] });Grüße und Danke
@bobby Im Prinzip ist der output doch in Ordnung - die Anführungszeichen werden maskiert.
Ich hab es mal mit Deinem String versucht - keine Probleme:
let obj2 = JSON.parse("{\"data\":[{\"temperaturaussen\":9,\"feuchtaussen\":87.54,\"temperaturwohnzimmer\":21,\"feuchtwohnzimmer\":56.98,\"temperaturbadezimmer\":21,\"feuchtbadezimmer\":60.79,\"davefeucht\":58,\"daveduenger\":1345,\"udofeucht\":50,\"udoduenger\":294}]}"); log (obj2); log (obj2.data[0].temperaturwohnzimmer);
Im Prinzip ist deshalb eigentlich der Antwort von @Jey-Cee nichts hinzuzufügen und man muss auch überhaupt keine Verrenkungen mit Stringmanipulationen machen.
Also:
val dataJson = JSON.parse(jsonstring)Wenn Du das ganze wieder stringifizierst - dann ist die Maskierung auch wieder weg:

Ist in meinen Augen unnötig, aber damit würde quasi Deine Zuweisung wie folgt aussehen:
val dataJson = JSONObject(JSON.stringify(JSON.parse(jsonstring)))
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden