程序库: JSON Serialization and Deserialization (native MQL) - 页 13

 

我从 http 请求中收到了以下字符串:

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

我不明白如何使用 "JAson.mqh "库在 mql4 中处理和分离 json 的值,该库位于:https://www.mql5.com/zh/code/13663

我需要位于 "字段 "下的 "orders1 "的值,值 = 5

唯一变化的 "键 "是 "字段 "值中的键,所有其他键都是常量。

我希望能用类似的方法获取这些值:

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

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

请告诉我该怎么做。

谢谢

 
Eli Mizrahi:

请勿重复发帖!

您的另一个帖子已被删除。

 

帮帮我,网站上我试图获取信息的那一行是这样的:
"{\"version\:\"0.1\",\"timestamp\":1588516629,\"bycompany\":{\"XTrade\"
之前,没有"\"符号,我通过这个库顺利地获取了所有数据,现在出现了错误。
我试图在编辑器中删除它,但出现了错误。

string a = "\"; '' - 需要双引号

也就是说,我无法自行删除斜线。

你能告诉我这段代码是否无法处理这个错误吗?


 
Roman Starostin:

尝试在编辑器中删除它,但出现错误。

字符串 a = "\"; '' - 需要双引号

所以我无法自行删除斜线。

您能告诉我这段代码是否无法解决这个问题吗?

它说"需要双引号"。

你必须写双反斜杠"\\",而不是单反斜杠。

 

我正在使用 Telegram api,然后对文本进行反序列化。我的问题是,在 "update_id "结构之后的 json 中有一个回车符,而反序列化过程在没有错误的情况下停止了。


{"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);
 

array out of range in '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

 

hi this error :这个错误


jAson.mqh' (330,22) 中的数组超出范围// this error


当前位置:


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 网址的代码。

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 行,反序列化就不起作用了。请告诉我如何解决这个问题。
 
例如,{"ABC":{...}, "DEF":{...}, "GHI":{...}}, 我事先不知道元素名称,如何才能遍历所有元素?