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

 

Ich habe die folgende Zeichenfolge von einer http-Anfrage erhalten:

{"records":[{"id":"rec4haaOncoQniu8U","fields":{"orders1":5},"createdTime":"2020-02-08T09:08:22.000Z"}]}

Ich verstehe nicht, wie ich die Werte des json in mql4 verarbeiten und trennen kann, indem ich die Bibliothek "JAson.mqh" verwende, die sich hier befindet: https: //www.mql5.com/en/code/13663

Ich brauche die Werte von "orders1", die sich unter "fields" befinden, Wert = 5.

Die einzigen "SCHLÜSSEL", die sich ändern, sind die Schlüssel innerhalb der "Felder"-Werte, alle anderen Schlüssel sind Konstanten.

Ich würde gerne die Werte mit so etwas abrufen können:

string value1 = Result[0].["fields"].["orders1"]; //5

string value2 = Result[0].["fields"].["orders2"];

Bitte lassen Sie mich wissen, was ich tun kann.

Danke

 
Eli Mizrahi:

Nicht doppelt posten!

Ihr anderer Beitrag wurde gelöscht.

 

Helfen Sie mir, die Zeile auf der Website, in der ich versuche, Informationen zu erhalten, ist wie folgt:
"{\"version\":\"0.1\",\"timestamp\":1588516629,\"bycompany\":{\"XTrade\"
Vorher gab es kein "\"-Zeichen und ich habe alle Daten über diese Bibliothek ohne Probleme erhalten, jetzt gibt es einen Fehler.
Ich habe versucht, es im Editor zu entfernen, aber ich habe einen Fehler erhalten.

string a = "\" ; '' - doppelte Anführungszeichen werden benötigt

Das heißt, ich kann die schräge Zeile nicht selbst entfernen.

Können Sie mir sagen, ob dieser Code mit diesem Fehler nicht zurechtkommt?


 
Roman Starostin:

Ich habe versucht, sie im Editor zu entfernen, aber der Fehler bleibt.

string a = "\" ; '' - doppelte Anführungszeichen werden benötigt

Ich kann die schräge Zeile also nicht selbst entfernen.

Können Sie mir sagen, ob dieser Code damit nicht zurechtkommt?

Es heißt"doppelte Anführungszeichen werden benötigt".

Sie müssen einen doppelten Backslash "\\\" schreiben, nicht einen einfachen Backslash.

 

Ich verwende die Telegram api und dann deseriazle den Text. Mein Problem ist, dass es ein Wagenrücklauf innerhalb der Json nach "update_id" Struktur und die Deserialisierung stoppt ohne Fehler


{"ok":true,"result":[{"update_id":568022205,
"channel_post":{"message_id":434,"chat":{"id":-1001436032340,"title":"FORTUNA","type":"channel"},"date":1588890767,"reply_to_message":{"message_id":298,"chat":{"id":-1001436032340,"title":"FORTUNA","type":"channel"},"date":1588753581,"text":"text","entities":[{"offset":67,"length":11,"type":"mention"}]},"text":"this is the text"}}]}

Mein Code lautet

string out;
      string url=StringFormat("%s/bot%s/getUpdates",TELEGRAM_BASE_URL,m_token);
      string params=StringFormat("offset=%d",m_update_id);
      //---
      int res=PostRequest(out,url,params,WEB_TIMEOUT);
      if(res==0)
        {
        
         Print(StringDecode(out));
         //--- Ergebnis parsen
         CJAVal js(NULL,jtUNDEF);
         bool done=js.Deserialize(out);
         if(!done)
            return(ERR_JSON_PARSING);

         bool ok=js["ok"].ToBool();
         if(!ok)
            return(ERR_JSON_NOT_OK);
 

array out of range in 'jAson.mqh' (330,22) Fehler gemeldet!


Position in:


case '{': // начало объекта. создаем объект и забираем его из js

i0=i+1;

if (m_type!=jtUNDEF) { Print(m_key+" "+string(__LINE__)); return false; }// ошибка типа

m_type=jtOBJ; // задали тип значения

i++; if (!Deserialize(js, slen, i)) { Print(m_key+" "+string(__LINE__)); return false; } // вытягиваем его

return js[i]=='}' || js[i]==0; // Exception here.

Pause;


Ich danke Ihnen für Ihre Hilfe.

2823500551@qq.com

 

hi dieser Fehler :


array out of range in 'jAson.mqh' (330,22) // dieser Fehler


position:


case '{': // начало объекта. создаем объект и забираем его из js

i0=i+1;

if (m_type!=jtUNDEF) { Print(m_key+" "+string(__LINE__)); return false; }// ошибка типа

m_type=jtOBJ; // задали тип значения

i++; if (!Deserialize(js, slen, i)) { Print(m_key+" "+string(__LINE__)); return false; } // вытягиваем его

return js[i]=='}' || js[i]==0 ; // dieser Fehler was ist mit mir?

Pause;



2823500551@qq.com

 

Hallo

Würden Sie mir bitte einen Code zur Verfügung stellen, um diese json url zu parsen?

https://search.codal.ir/api/search/v2/q?&Audited=true&AuditorRef=-1&Category=-1&Childs=true&CompanyState=-1&CompanyType=-1&Consolidatable=true&IsNotAudited=false&Length=-1&LetterType=-1&Mains=true&NotAudited=true&NotConsolidatable=true&PageNumber=1&Publisher=false&TracingNo=-1&search=true;
 
Vielen Dank für ein tolles Produkt! Es funktioniert gut, solange es wenig Daten gibt, aber wenn das Array mehr als 1000 Zeilen ist, funktioniert die Deserialisierung nicht. Bitte sagen Sie mir, wie es zu beheben.
 
Wie kann ich durch alle Elemente eines JsonArray laufen?

Zum Beispiel {"ABC":{...}, "DEF":{...}, "GHI":{...}}, ich weiß nicht, die Elementnamen im Voraus, wie kann ich durch alle von ihnen laufen?