FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: delMar am 20 Mai 2019, 22:17:14

Titel: Problem mit json2nameValue
Beitrag von: delMar 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
Titel: Antw:Problem mit json2nameValue
Beitrag von: Wuehler am 20 Mai 2019, 22:26:18
Hallo Martin,

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

VG,
Dirk
Titel: Antw:Problem mit json2nameValue
Beitrag von: delMar am 20 Mai 2019, 22:29:42
Zitat von: Wuehler am 20 Mai 2019, 22:26:18
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);
Titel: Antw:Problem mit json2nameValue
Beitrag von: CoolTux am 20 Mai 2019, 22:51:29
Kannst Du bitte einmal den ganzen JSON String hier zeigen.
Titel: Antw:Problem mit json2nameValue
Beitrag von: hexenmeister 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'
        };
Titel: Antw:Problem mit json2nameValue
Beitrag von: CoolTux am 20 Mai 2019, 22:54:29
Oh das war schon der ganze String.
Titel: Antw:Problem mit json2nameValue
Beitrag von: hexenmeister 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"}
Titel: Antw:Problem mit json2nameValue
Beitrag von: delMar 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
Titel: Antw:Problem mit json2nameValue
Beitrag von: delMar 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