Bibliotecas: JSON Serialization and Deserialization (native MQL) - página 13

 

He recibido la siguiente cadena desde una petición http:

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

No estoy entendiendo como puedo procesar y separar los valores del json en mql4 usando la librería "JAson.mqh ", localizada aquí: https: //www.mql5.com/en/code/13663

Necesito los valores de "orders1" ubicado en "fields" , valor = 5.

las únicas "CLAVES" que cambian son las claves dentro de los valores de "fields", todas las demás claves son constantes.

me gustaria poder obtener los valores con algo como esto:

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

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

Por favor diganme que puedo hacer.

Gracias

 
Eli Mizrahi:

¡No hagas doble post!

Su otro mensaje ha sido eliminado.

 

Ayúdame, la línea del sitio donde intento obtener la información es así:
"{\"version\":\"0.1\",\"timestamp":1588516629,\"bycompany\":{\"XTrade\"
Antes no había el signo "\" y obtenía todos los datos a través de esta librería sin problemas, ahora hay un error.
He intentado quitarlo en el editor, pero me da error.

string a = "\" ; '' - se necesitan comillas dobles

Es decir, no puedo quitar la línea inclinada por mi cuenta.

¿Puedes decirme si este código no puede hacer frente a este error?


 
Roman Starostin:

Traté de quitarlo en el editor, pero el error.

string a = "\" ; '' - se necesitan comillas dobles

Así que no puedo eliminar la línea inclinada por mi cuenta.

¿Me puede decir si este código no será capaz de hacer frente a ella?

Dice"se necesitan comillas dobles".

Tienes que escribir una doble barra invertida "\\\", no una sola barra invertida.

 

Estoy usando la api de Telegram y luego deseriazle el texto. Mi problema es que hay un retorno de carro dentro del json después de la estructura "update_id" y el deserialise se detiene sin error.


{"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"}}]}

Mi código es

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));
         //--- resultado del análisis
         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 fuera de rango en 'jAson.mqh' (330,22) ¡Error reportado!


Posición en:


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; // Excepción aquí.

break;


Gracias por su ayuda.

2823500551@qq.com

 

hola este error :


array fuera de rango en 'jAson.mqh' (330,22) // este error


posición:


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 ; // este error ¿qué pasa conmigo ?

romper;



2823500551@qq.com

 

Hola

¿Podría proporcionarme un código para analizar esta url json?

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;
 
¡Gracias por un gran producto! Funciona bien mientras hay pocos datos, pero si el array tiene más de 1000 filas, la deserialización no funciona. Por favor, dime cómo solucionarlo.
 
¿Cómo puedo recorrer todos los elementos de un JsonArray?

Por ejemplo {"ABC":{...}, "DEF":{...}, "GHI":{...}}, no conozco de antemano los nombres de los elementos, ¿cómo puedo recorrerlos todos?