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

 
danielsokolowsk:

これがネストされたJSONをサポートすることになっているかどうか、誰か、あるいは作者は答えてくれますか?つまり、CJAValインスタンスには、別のCJAValインスタンスであるキー'2'と'3'が含まれています。コードは実行されているようですが、シリアライズされるとキーは空白になります。


しかし、本来は

https://www.mql5.com/ru/forum/63015

いくつかの例

   string a[] = {"1", "2", "3"};
   int b[] = {1, 2, 3};
   
   CJAVal js;
   js["a"].Add(a[0]);
   js["a"].Add(a[1]);
   js["a"].Add(a[2]);
        
   js["b"].Add(b[0]);
   js["b"].Add(b[1]);
   js["b"].Add(b[2]);
   
   js["c"][0]=1.1;
   js["c"][1]=2.9;
   js["c"][2]=3.03;
   
   string t=js.Serialize();
   Print(t);   // {"a":["1","2","3"],"b":[1,2,3],"c":[1.10000000,2.90000000,3.03000000]} 
   
   
   js.Clear();
   js.Deserialize(t); 
   Print(js["c"][2].ToStr()); // 3.03000000

配列の配列

JAval j1; j1.Add(1);

JAval j2; j2.Add(2); j2.Add(3);

JAval js;

js["a"].Add(j1);
js["a"].Add(j2);

// { a:[ [1], [2,3] ]; }
Библиотеки: JSON Serialization and Deserialization (native MQL)
Библиотеки: JSON Serialization and Deserialization (native MQL)
  • 2015.08.18
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: JSON Serialization and Deserialization (native MQL)
 
素晴らしいデザインだ!時計仕掛けのように機能する。
 
Konstantin Efremov:
素晴らしいデザインだ!私のロボットに使ってみた。

バイブルにはいくつかのバグがありますが、修正版を添付します。

ファイル:
json.mqh  44 kb
 

こんにちは、


このライブラリを使ってjsonファイルを読み込もうとしています。


このような場合の例を教えていただけますか?


私の最初の行は次のとおりです:

   string s[];
   int cpt=0;
   
   int handle=FileOpen("json_sample.txt",FILE_READ|FILE_TXT|FILE_ANSI);
   while(!FileIsEnding(handle)) {ArrayResize(s,ArraySize(s)+1); s[cpt++]=FileReadString(handle);}
   FileClose(handle);


jsonファイルからいくつかの値を変数に格納するためにはどうすればいいでしょうか?


助けてくれてありがとう!

Erwann.

 

いろいろ調べた結果、解決しました :)


文字列の制限は256バイトなので、文字列テーブル[]を使う必要はない。


実際には文字列の長さに制限はない(引用符""の間の初期化だけ)。

だから、次のコードを使うだけでいい:

   CJAVal srce;
   
   string s;
   int cpt=0;
   
   int handle=FileOpen("json_sample.txt",FILE_READ|FILE_TXT|FILE_ANSI);
   while(!FileIsEnding(handle)) StringAdd(s,FileReadString(handle));
   FileClose(handle);
   
   srce.Deserialize(s);


s文字列変数は256文字以上の長さを持つことができます :)


じゃあね、

Erwann.

 
danielsokolowsk:

これがネストされたJSONをサポートすることになっているかどうか、誰か、あるいは作者は答えてくれますか?つまり、CJAValインスタンスには、別のCJAValインスタンスであるキー'2'と'3'が含まれています。コードは実行されているようですが、シリアライズされるとキーは空白になります。


しかし、本来は

Daniel、私も、ネストされたJSONオブジェクト(配列ではない)を使用しているときに、空のキーの問題に遭遇しました。Set()関数を 使用することで解決しました。例

CJAVal msg, content;
msg["messageName"] = "TickData";
content["instrument"] = Symbol();
content["timeFrame"] = (int) Period();
content["time"] = (int) TimeCurrent();
content["open"] = iOpen(Symbol(), Period(), 0);
msg["content"].Set(content);
Print("Sending JSON to server: ", msg.Serialize());

 
Andrey Dik:

バイブルにはいくつかのバグがある。修正版を添付する。

ありがとう!

 

JSONツリーから要素を削除する 方法を教えてください。SetやAddのメソッドはありますが、Deleteのメソッドはありません。

よろしくお願いします。

削除済み  

ulongとdatetime型のサポートを追加しました。

削除済み  
Ting Yu:

WebRequestの結果は配列です。

jv.Deserialize( result);


どのように 反復 できますか?

if result likes
[{"a":1},{"a":2}]で ある。

'

jv[0]["a"].ToInt()で1を、jv[1]["a"].ToInt()で2を得ることができる。