ライブラリ: JSONシリアライズとデシリアライズ(ネイティブMQL) - ページ 13

 

httpリクエストから以下の文字列を受け取りました:

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

https://www.mql5.com/ja/code/13663 ここにある "JAson.mqh "ライブラリを使用して、mql4でjsonの値を処理し、分離する方法を理解していません。

私は "フィールド "の下にある "orders1 "の値が必要です、値= 5

変更される "KEY "は "fields "の値の中のキーだけで、他のキーはすべて定数です。

私はこのようなもので値を取得できるようにしたいと思います:

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

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

何ができるか教えてください。

ありがとうございます。

 
Eli Mizrahi:

二重投稿はしないでください!

あなたの他の投稿は削除されました。

 

助けてください。情報を取得しようとしているサイトの行が以下のようになっています。
"{"version": \"0.1", ˶"timestamp":1588516629,˶"bycompany":{"XTrade ˶"
以前は"˶"の記号がなくて、このライブラリですべてのデータを問題なく取得できたのですが、今はエラーになっています。
エディタで削除しようとしたのですが、エラーになってしまいました。 "{"version":˶"0.1", ˶"timestamp":158851662 9,˶"bycompany":{"XTrade ˶" エディタで削除しようとしたのですが、エラーになってしまいました。

string a = "\"; '' - ダブルクォーテーションが必要です。

つまり、斜線を自力で削除できないのです。

このコードではこのエラーに対応できないのか教えてください。


 
Roman Starostin:

エディターで削除しようとしたが、エラー。

string 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);
 

'jAson.mqh' の配列が範囲外 です (330,22) Error reported!


の位置:


case '{': // 以下のようになります。

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 '{':// このエラーは、'jAson.mqh'内の配列の範囲外です。このエラーは、'jAson.mqh'内で発生します。

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&長さ=-1&LetterType=-1&Mains=true&NotAudited=true&NotAudited=false?Length=-1&LetterType=-1&Mains=true&NotAudited=true&NotConsolidatable=true&PageNumber=1&Publisher=false&TracingNo=-1&search=true;
 
素晴らしい製品を ありがとう!データが少ないうちはうまくいくのですが、配列が1000行を超えるとデシリアライズがうまくいきません。修正方法を教えてください。
 
例えば{"ABC":{...}, "DEF":{...}, "GHI":{...}}のように、あらかじめ要素名がわかっていない場合、どのようにすればすべての要素に目を通すことができますか?