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

 

WebRequest() へのリファレンスの例、そして読み込まれたデータをどのように読み取り可能なものに変えるかは、もうおわかりですね?

そうして初めて、ジェイソンのテキストを 分析できるのです。

Dokumentation zu MQL5: Netzwerkfunktionen / WebRequest
Dokumentation zu MQL5: Netzwerkfunktionen / WebRequest
  • www.mql5.com
WebRequest - Netzwerkfunktionen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Carl Schreiber #:

WebRequest() を参照する例、そして読み込まれたデータをどのように読み取り可能なものに変換するかは、すでにご存じだろうか。

そうして初めて、ジェイソンのテキストを 分析できるのです。

わかりました、少し変更しました。 それはもうとても役に立ちました。

プリント経由のメッセージはこうだ:

2022.12.21 20:20:48.718 jason_test (GER40,H1) ファイルのダウンロードに成功しました。

ということは、サーバーからのレスポンスがあるということだ。そして、私が探していた答えを実際に含むurlというファイルが作成されました。

ご協力ありがとうございました。
 

アップデートできますか?

JAval j1; j1.Add(1);
j1["a"] = 1;
j1["b"] = 2;


この機能を追加できますか?

j1.Del("a");
j1.Pop();
j1.shift();
j1.sort();
j1.sort();
 

次のアップデートの後、動かなくなった。ログにはエラーのある行番号が あります:

ビルド 3756.

 

次のような構造がある。

[

{

"チケット":671073362

},

{

"チケット":111111111

}

]


2つのアイテムを取得したい。最初のチケットと2番目のチケットの両方。

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

jv.Deserialize(js);

Print( jv["ticket"].ToStr());

この方法では、最初のチケットにしかアクセスできません。2枚目以降のチケットがある場合、どのようにアクセスするのでしょうか?

この問題はここhttps://www.mql5.com/ru/forum/63015/page3#comment_2844920 で議論されましたが、そこでは著者はこのような構造を名前付き配列でラップしていました。

string js = "{\"array\":[{\"ticket\":671073362},{\"ticket\":111111111}]}";

jv.Deserialize(js);

for(int i = 0; i < ArraySize(jv["array"].m_e); i++)
   {
      Print(jv["array"].m_e[i]["ticket"].ToInt());
   }

しかし、json構造を変更できない場合、どうすればいいのでしょうか?どのようにこの配列を取得し、要素を見ていくのでしょうか?

 
Nikita Chernyshov #:

こんな構造がある

[

{

"チケット":671073362

},

{

"チケット":111111111

}

]

...

指定された文字列は、冒頭で与えられた構造と一致せず、有効なjson文字列ではありません:

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

であるべきである:

string js = "[{\"ticket\":671073362},{\"ticket\":111111111}]";

この指摘は、json-aの仕様に関するものであり、特定のライブラリでどのように実装されているかは関係ない。私は別のものを使っている。

 
Stanislav Korotky #:

指定された文字列は冒頭で指定された構造と一致せず、有効なjson文字列ではありません:

であるべきです:

この指摘は、json-aの仕様に関するものであり、特定のライブラリでどのように実装されているかは関係ない。私は別のものを使っている。

その通りです。四角が欠けていますが、それは何の役にも立ちません)

削除済み  
関数型マクロ 'DEBUG_PRINT_KEY' の引数が多すぎる JAson.mqh 391 40
if (type != jtUNDEF) { DEBUG_PRINT_KEY(); return false; }  // 値がすでに型を持っている場合、これはエラーとなる。

マクロ 'DEBUG_PRINT_KEY' の宣言を参照してください JAson.mqh

#ifdef  DEBUG
    #define  DEBUG_PRINT_KEY() Print(key+" "+string(__LINE__))
#else
    #define  DEBUG_PRINT_KEY()
#endif

この警告は最新の mql5 のコンパイルで出ています。

修正方法を教えてください。

 
Arpit T #:
修正方法は?

括弧を取り除く

if (type != jtUNDEF) { DEBUG_PRINT_KEY; return false; }  // 値がすでに型を持っている場合、これはエラーとなる。
#ifdef  DEBUG
    #define  DEBUG_PRINT_KEY Print(key+" "+string(__LINE__))
#else
    #define  DEBUG_PRINT_KEY
#endif
削除済み  
Manuel Alejandro Cercos Perez #:

括弧を取り除く

修正しました。

修正したコードをここに添付します。

ファイル:
JAson_1.13.mqh  45 kb