Autor Thema: Problem mit json2nameValue  (Gelesen 294 mal)

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 223
Problem mit json2nameValue
« am: 20 Mai 2019, 22:17:14 »
Hallo,

ich verstehe grad die Welt nicht mehr:
ich möchte einen String mit json2nameValue parsen. Hab das schon oft gemacht und hat auch immer funktioniert.
Außer diesmal:

Folgenden Code führe ich aus:
# $data enthält diesen String: {"version":"1.30.4","apiversion":"1.0"}
my $loadJson = json2nameValue($data);
Log3 $name, 4, "ReadHostInfo_Callback json string: $data || object: ".to_json($dataJson);
liefert im Log
2019.05.20 22:07:28 4:  ReadHostInfo_Callback json string: {"version":"1.30.4","apiversion":"1.0"} || object: {}

Warum ist $dataJson leer?
Ich bekomme auch tatsächlich keine Werte raus, das Problem liegt nicht im to_json.
Ich hab auch schon versucht, non-ascii characters zu entfernen (falls unsichtbare sonderzeichen drin sein sollten), auch ohne erfolg.
wie gesagt: ich verwende diese Funktion dauernd. Warum funktioniert sie hier nicht?
Vielen Dank!

schöne Grüße
Martin
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Offline Wuehler

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 513
Antw:Problem mit json2nameValue
« Antwort #1 am: 20 Mai 2019, 22:26:18 »
Hallo Martin,

weil deine Variable einmal $loadJson und einmal $dataJson heißt vermutlich.

VG,
Dirk

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 223
Antw:Problem mit json2nameValue
« Antwort #2 am: 20 Mai 2019, 22:29:42 »
Hallo Martin,

weil deine Variable einmal $loadJson und einmal $dataJson heißt vermutlich.

VG,
Dirk

sorry, copy/paste fehler - ach, wär das schön gewesen.

ich hab das problem 2x in meinem code und hab jeweils einen teil kopiert (das hat man davon, wenn man bei der arbeit eine pause macht)
nochmal (jetzt aus der selben methode rauskopiert):
my $dataJson = json2nameValue($data);
Log3 $name, 4, "ReadHostInfo_Callback json string: $data || object: ".to_json($dataJson);
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20721
Antw:Problem mit json2nameValue
« Antwort #3 am: 20 Mai 2019, 22:51:29 »
Kannst Du bitte einmal den ganzen JSON String hier zeigen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4530
    • tech_LogBuch
Antw:Problem mit json2nameValue
« Antwort #4 am: 20 Mai 2019, 22:53:16 »
So, wie im ersten Post beschrieben - funktioniert bei mir:
fhem> {use Data::Dumper;;my $data='{"version":"1.30.4","apiversion":"1.0"}';;my $dataJson = json2nameValue($data);;Dumper($dataJson)}
$VAR1 = {
          'version' => '1.30.4',
          'apiversion' => '1.0'
        };
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20721
Antw:Problem mit json2nameValue
« Antwort #5 am: 20 Mai 2019, 22:54:29 »
Oh das war schon der ganze String.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4530
    • tech_LogBuch
Antw:Problem mit json2nameValue
« Antwort #6 am: 20 Mai 2019, 22:55:08 »
auch so tut es ohne Murren:
fhem> {my $data='{"version":"1.30.4","apiversion":"1.0"}';;my $dataJson = json2nameValue($data);;toJSON($dataJson)}
{"apiversion":"1.0","version":"1.30.4"}
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 223
Antw:Problem mit json2nameValue
« Antwort #7 am: 21 Mai 2019, 15:03:52 »
Oh, Mann.

Warum to_json nix liefert, weiß ich nicht.
Mein Problem is aber glaub ich ein anderes:

# Anstatt es so zu machen
$dataJson->{apiversion}

# Hab ich es so gemacht
$dataJson->{'apiversion'}

# und deshalb hab ich dann wohl auch nie Werte erhalten...

Ich kann das erst am Abend verifizieren, aber ich werde berichten

PS: ein sehr schönes Beispiel dafür, wie man ein Problem so voreingenommen betrachten kann, dass man den relevanten Teil nicht einmal posted - sodass niemand die Chance hat, es überhaupt zu lösen.
Sorry Leute, ich gelobe Besserung
« Letzte Änderung: 21 Mai 2019, 15:19:03 von delmar »
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 223
Antw:Problem mit json2nameValue
« Antwort #8 am: 21 Mai 2019, 15:47:12 »
Nein, das hat auch keinen Unterschied gemacht.
:-(

Die Beispiele von euch funktionieren aber auch bei mir.

Gibt es eine Möglichkeit, json2nameValue irgendwie zu debuggen?
json2reading funktioniert auch nicht, falls sich das jemand fragt (die beiden sind ja eng verwandt)
In einem anderen Modul von mir funktioniert das aber einwandfrei



Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

 

decade-submarginal