Bibliotheken: JSON Serialization and Deserialization (native MQL) - Seite 14
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Bibliothek ist sehr nützlich. Aber ich bin darauf gestoßen, dass bei der Serialisierung von Werten des Typs double ein starker Verlust an Präzision auftritt.
Beispiel:
double minutes_open[] = {0.95347, 0.95317, 0.95324}
for (int i=0; i<ArraySize(minutes_open); ++i) jv["minutes_open"].Add(minutes_open[i]);
Nach der Serialisierung erhalte ich:
"minutes_open":[9.53e-01,9.53e-01,9.53e-01]
D.h. die letzten 2 signifikanten Zeichen gehen einfach verloren und alle Werte im Array werden einfach gleich. Infolgedessen gehen alle Berechnungen, die auf diesen Daten basieren, ins Leere....
Schließlich habe ich das Problem durch die Umwandlung von Array-Werten in Strings gelöst.
Hallo zusammen!
Die Dokumentation der JAson-Bibliothek ist nicht vollständig auf dieser Seite. Ich habe die Dokumentation mit mehr Details geschrieben und Unit-Tests hinzugefügt: https://github.com/vivazzi/JAson. Es könnte für jemanden nützlich sein.
Fügen Sie ich erstellt Ausgabe, die Beschreibung der Fehler der Verwendung von inneren Json (CJAVal Objekt) hat: https://github.com/vivazzi/JAson/issues/1.
Das CJAVal-Objekt wird nicht korrekt einem anderen CJAVal-Objekt als Objekt zugewiesen:
Als Workaround muss man die Methode Set() verwenden:
Wenn jemand helfen kann, dann werden viele MQL-Entwickler dankbar sein, da dieser Fehler schon seit vielen Jahren besteht.
Hallo zusammen!!!
Die JAson-Dokumentation ist auf dieser Seite nicht vollständig, also habe ich eine ausführlichere Dokumentation https://github.com/vivazzi/JAson/ geschrieben und Unit-Tests hinzugefügt: vielleicht findet sie jemand nützlich.
Und ich habe das Problem der Verwendung eines verschachtelten Json (CJAVal Objekt) beschrieben: https://github.com/vivazzi/JAson/issues/1.
Das CJAVal-Objekt wird nicht korrekt gespeichert, wenn Sie das Zeichen "=" verwenden (ein leerer Schlüssel wird gespeichert):
Ja, in den Tests, die auf der Bibliotheksseite auf dieser Website beigefügt sind, können Sie feststellen, dass Sie die Set()-Methode verwenden müssen:
Aber wenn jemand die Bibliothek so korrigieren kann, dass es möglich ist, verschachtelte Json-Strukturen über das "="-Zeichen zu speichern, würde das vielen Leuten helfen. Mir ist nämlich aufgefallen, dass manche Leute denken, die Bibliothek hätte Fehler, wenn sie versuchen, eine verschachtelte CJAVal auf die übliche Weise über "=" zuzuweisen .
Ich hoffe, das ist in der MQL-Sprache überhaupt möglich. Ich habe versucht, es selbst zu korrigieren, aber ich habe keine tiefen Kenntnisse der MQL-Sprache, und bisher hat es nicht funktioniert, die Zuweisung über "=" zu tun.
Hallo zusammen!
Die Dokumentation der JAson-Bibliothek ist nicht vollständig auf dieser Seite. Ich habe die Dokumentation mit mehr Details geschrieben und Unit-Tests hinzugefügt: https://github.com/vivazzi/JAson. Es könnte für jemanden nützlich sein.
Fügen Sie ich erstellt Ausgabe, die Beschreibung der Fehler der Verwendung von inneren Json (CJAVal Objekt) hat: https://github.com/vivazzi/JAson/issues/1.
Das CJAVal-Objekt wird nicht korrekt einem anderen CJAVal-Objekt als Objekt zugewiesen:
Als Workaround müssen Sie die Methode Set() verwenden:
Wenn jemand helfen kann, dann werden viele MQL-Entwickler dankbar sein, da dieser Fehler schon seit vielen Jahren besteht.
Das Problem liegt in der Copy-Methode.
Der Schlüssel wird mit dem Schlüssel des Unterobjekts überschrieben, in Ihrem Beispiel wird "b" mit dem Schlüssel von "nested_data" überschrieben, der leer ist.
Ich habe diese einfache Lösung verwendet, nicht vollständig getestet:
Vielen Dank, Laszlo Tormasi - Ihr Fix funktioniert und alle Tests haben bestanden!
Ich habe JAson mit Ihren Korrekturen aktualisiert: https://github.com/vivazzi/JAson
Das Problem der Zuweisung von verschachtelten Json-Strukturen über das "="-Zeichen wurde von Laszlo Tormasi im Kommentar https://www.mql5.com/en/forum/65320/page3#comment_21453129 gelöst .
JAson-Version mit Änderungenunter https://github.com/vivazzi/JAson.
Danke an alle, die versucht haben, das Problem zu verstehen und zu helfen!
Ein Fehler ("array out of range"), der bei negativen Array-Indizes auftrat, wurde behoben. Jetzt gibt der [] Operator NULL zurück.
Die Verarbeitung sieht jetzt so aus.
Außerdem habe ich der Einfachheit halber die Methode ToIntI hinzugefügt. Da ToInt long zurückgibt.
Ich verstehe nicht, wie man das verschachtelte json lesen kann.
Hier ist eine Zeichenfolge wie diese:
string str= { "key1": [ { "key2": [ { "key3": "val)" }, {}, {} ] } ] }Wie kann ich sie lesen und auf die Elemente zugreifen?
Egal wie ich es versuche, es funktioniert nicht.Ich verstehe nicht, wie man das verschachtelte json lesen kann.
Hier ist eine Zeichenfolge wie diese:
Wie kann ich sie lesen und auf die Elemente zugreifen?
Egal, wie oft ich es versuche, ich kann es nicht verstehen.string str; CJAVal data; str= "{" " \"key1\": [" " {" " \"key2\": [" " {" " \"key3\": \"val)\"" " }," " {}," " {}" " ]" " }" " ]" "}"; data.Deserialize(str); Print(data["key1"][0]["key2"][0]["key3"].ToStr());Wenn Sie die Struktur Ihrer json-Zeichenkette nicht verstehen oder etwas schief läuft, gehen Sie wie folgt vor:
Um die Struktur einer json-Zeichenkette leicht zu verstehen , verwenden Sie diese Website: https: //jsoneditoronline.org/.