Bibliotheken: JSON Serialization and Deserialization (native MQL) - Seite 3

 

Nun, es stellt sich heraus, dass es nur ein Array von Objekten ist.

das allgemeine Aussehen von "Array": [ {..}, {..}, ]

Ich meine, wickeln Sie diese Liste in geschweifte Klammern ein.

"List": [ {"symbol": "USDJPY", "type": "Buy" },  { "symbol": "EURUSD", "type": "Sell" } ]
 

Ich habe es mit eckigen Klammern eingeschränkt. Aber nur das erste Objekt wird gelesen:

[ {
     "symbol": "USDJPY",
     "type": "Buy",
     "lot": 0.5,
     "price_open": 102.36,
     "price_close": 102.44,
     "stop_loss": 99.25,
     "take_profit": 103.25 
    },
    {

Wie lese ich ein Array ein?

 

Geben Sie dem Parser gültige json-Daten?

Alles funktioniert mit Ihren Daten

  string in="{ \"array\": [ { \"symbol\": \"USDJPY\", \"type\": \"Buy\", \"lot\": 0.5, \"price_open\": 102.36, \"price_close\": 102.44, \"stop_loss\": 99.25, \"take_profit\": 103.25 }, { \"symbol\": \"EURUSD\", \"type\": \"Sell\", \"lot\": 0.2, \"price_open\": 1.1044, \"price_close\": 1.1252, \"stop_loss\": 1.1434, \"take_profit\": 1.0922 } ] }";
  CJAVal js(NULL,jtUNDEF);
  js.Deserialize(in);
  string out="";
  js.Serialize(out);
  Print(out);
 
Alexej, ich danke dir sehr! Ich habe vergessen, es in geschweifte Klammern einzuschließen.....
 

Frage von einem "Dummy".

Wie kann ich den Wert eines Schlüssels ermitteln, ohne auf die Methode "Key Lookup" zurückzugreifen?

virtual CJAVal *CJAVal::FindKey(string akey) 
 
Dennis Kirichenko:

Frage von einem "Dummy".

Wie kann ich den Wert eines Schlüssels ermitteln, ohne auf die findkey-Methode zurückzugreifen?

Nur wenn man den vollständigen Pfad zum Schlüssel kennt, aber findkey wird implizit verwendet.

double d=jo["order"]["profit"];

double d=ja["array"].m_e[0]["profit"];

---

Andernfalls kann man direkt auf das Array m_e zugreifen, wenn man den genauen Index kennt.

 

Hallo. Wo kann ich über alle Funktionen Ihrer Bibliothek lesen? Neulich musste ich das Problem der Interaktion mit einer der Internetressourcen lösen, deren Antwort im JSON-Format zurückgegeben wird. Ihre Bibliothek hat mir geholfen, Zeit zu sparen und mich nicht mit JSON-Parsing zu beschäftigen, wofür ich Ihnen sehr dankbar bin! Aber ich würde die Funktionen der Bibliothek gerne noch besser verstehen. Ich habe keine Beschreibung der Bibliotheksfunktionen gefunden.

Und noch eine Frage: In der Antwort des Dienstes steht in einem der Felder eine kleine Beschreibung in Kyrillisch, aber der JSON-Dienst kodiert diesen Text wie folgt: "description": "\u041d\u043e\u0432\u043e\u0435\u0432\u0432\u0435\u0440\u0441\u0438\u0438 v.2\r\n1.\u0418\u0437\u043c\u0435\u043d\u0435\u043d \u0434\u0438\u0437\u0430\u0439\u043d \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438\r\n2.\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043d\u0438\u043f\u0430\u043d\u0435\u043b\u044c\r\n3.\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430\r\n4.\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\r\n\r\n"

Ist es möglich, diesen Text mit Hilfe Ihrer Biblioteca in das gewünschte Format zu übersetzen?

Ich danke Ihnen im Voraus!

 

libe hat nur zwei Hauptfunktionen

Serialisierung und Deserialisierung.

Alles andere sind überladene Operatoren, Setzen und Lesen von Arrays

---

dieser escapete Text kann konvertiert werden.

Ich werde in der nächsten Version die Unescape-Funktion um Parsing erweitern.

 

aktualisiert auf 1.05

Der Text aus Ihrem Beispiel wird umgewandelt in

{"description": "Neu in Version v.2\r\n1.Umgestaltetes Handels-Panel\r\n2.Mini-Panel hinzugefügt\r\n3.Saldoanzeige für ausgewähltes Handelskonto hinzugefügt\r\n4.Einige Bugs behoben"}

---

Während die Admins die Codebasis aktualisieren, können Sie die angehängte Version herunterladen.

Dateien:
jason.mqh  30 kb
 
o_O:

aktualisiert auf 1.05

Der Text aus Ihrem Beispiel wird umgewandelt in

{"description": "Neu in Version v.2\r\n1.Umgestaltetes Handels-Panel\r\n2.Mini-Panel hinzugefügt\r\n3.Saldoanzeige für ausgewähltes Handelskonto hinzugefügt\r\n4.Einige Fehler behoben"}

---

während die Admins die Codebasis aktualisieren, können Sie die angehängte Version herunterladen.

Vielen Dank dafür! So kann ich jetzt aus dem Eulendecoder, den ich bereits geschrieben habe, entfernen. Alles soll in einer Bibliothek sein! Sehr schnelle Antwort! Vielen Dank!