Библиотеки: JSON Serialization and Deserialization (native MQL) - страница 13

 

Я получил следующую строку из http-запроса:

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

Я не понимаю, как я могу обработать и разделить значения json в mql4, используя библиотеку "JAson.mqh ", расположенную здесь: https: //www.mql5.com/en/code/13663.

Мне нужны значения "orders1", расположенные в разделе "fields", value = 5.

Единственные "KEYS", которые меняются, это ключи внутри значений "fields", все остальные ключи являются константами.

Я хотел бы иметь возможность получить значения с помощью чего-то подобного:

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

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

Пожалуйста, дайте мне знать, что я могу сделать.

Спасибо

 
Eli Mizrahi:

Не делайте двойных сообщений!

Ваше второе сообщение было удалено.

 

Подскажите, строка на сайте, откуда я пытаюсь получить информацию такого вида:
"{\"version\":\"0.1\",\"timestamp\":1588516629,\"bycompany\":{\"XTrade\"
Раньше знака "\" не было и все данные через эту библиотеку получал без труда, теперь ошибка. 
Пытался его убрать в редакторе, но ошибка

string a = "\";   '' - double quotes are needed

Т.е. своими силами я не могу убрать наклонную линию.

Подскажите, данный код не сможет справиться с этой


 
Roman Starostin:

Пытался его убрать в редакторе, но ошибка

string a = "\";   '' - double quotes are needed

Т.е. своими силами я не могу убрать наклонную линию.

Подскажите, данный код не сможет справиться с этой

так написано жеж "double quotes are needed"

нужно писать двойной бекслеш "\\", а не одинарный

 

Я использую Telegram api и затем десериализую текст. Моя проблема в том, что внутри json после структуры "update_id" есть возврат каретки, и десериализация останавливается без ошибки.


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

Мой код

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));
         //--- результат разбора
         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);
 

Массив вне диапазона в 'jAson.mqh' (330,22) Сообщается об ошибке!


Позиция в:


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; // Исключение здесь.

break;


Спасибо за помощь.

2823500551@qq.com

 

привет, эта ошибка:


массив вне диапазона в 'jAson.mqh' (330,22) // эта ошибка


позиция:


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 ; // эта ошибка, что со мной?

break;



2823500551@qq.com

 

Привет

Не могли бы вы предоставить мне код для анализа этого json url?

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;
 
Спасибо за отличный продукт! Пока данных мало, работает хорошо, но если массив больше 1000 строк, то десериализация не работает. Пожалуйста, подскажите, как это исправить.
 
Как можно пробежаться по всем элементам JsonArray? 

Например {"ABC":{...}, "DEF":{...}, "GHI":{...}}, заранее не знаю названия элементов, как пробежаться по всем?