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

 
o_o:

1.12

ArrayResizeでステップ100を設定する

Codebaseのソースを更新する必要がありますか?

 
Delta.800:

スペシャリストの皆様へライブラリを理解するのを手伝ってください。(私はまだオブジェクト指向プログラミングが得意ではないので、ライブラリ自体のコードやBTC-E取引所に特化した記事を理解することができません。そのため、 の投稿のような簡単な例をお願いしています)。

私はWEX.NZ取引所の2つのパブリックapiを解析する必要があります。

https://wex.nz/api/3/info

ここから、利用可能なすべてのペア(btc_usd、btc_rur、...)を配列に取得する必要があります(パラメータなしで、ペアの名前だけです。)


https://wex.nz/api/3/depth/btc_usd


そして、ここから2つの配列(アスクとビッド)で注文の価格と値を取得する。

お力添えいただければ幸いです!よろしくお願いします!


何が失敗しているのでしょうか?
 
Rashid Umarov:

Codebaseのソースを更新する必要がありますか?

長い間そこにあります
 

よくやった!

しかしデシリアライズのために壊れたデータ(開始引用符または括弧の数が終了引用符または括弧の数と等しくない)を取得した場合、配列の オーバーランに関するメッセージとともにプログラムがクラッシュします。これは非常にまずいことで、少なくとも入力データが正しいかどうかのチェックがない場合、配列を扱うときにはこのような事態を考慮しなければならない。

 
Andrey Dik:

よくやった!

しかしデシリアライズのために壊れたデータ(開始引用符または括弧の数が終了引用符または括弧の数と等しくない)を取得した場合、配列の オーバーランに関するメッセージとともにプログラムがクラッシュします。少なくとも入力データが正しいかどうかのチェックがない場合、配列を扱うときにはこのような事態を考慮しなければなりません。

具体的なデータを示してください
 
o_o:


あなたのコードをどこで中断したのか、具体的に何に失敗しているのかを示してください。

一般的に、最初のリンクからすべてのペアの名前を取得する方法さえわからない :-(

---

最初のリンクからペアのパラメータにアクセスするには、次のようにする:

CJAVal dataM;
dataM.Deserialize(ttt);  
... 
Print(dataM["pairs"]["btc_usd"]["fee"].ToDbl());

ここで、tttはウェブリクエストから 得られた文字列である。

2番目のリンクから、私は問題を解決し、私は次のようにアクセスを取得します:

Print(dataM["btc_usd"]["asks"].m_e[1][0].ToDbl());
ここで
m_e[X][Y]

X-注文番号(ゼロから始まる)

Y- 0-は価格、1-は値。

 
Delta.800:

とにかく、最初のリンクから全ペアの名前を得る方法さえ分からないんだ :-(

---

最初のリンクからペアのパラメータにアクセスする方法はこうだ:

ここで、tttはウェブリクエストから得られた文字列である。

2番目のリンクから、私は問題を解決しました、私は次のようにアクセスを取得します:

ここで、

X-注文番号(ゼロから始まる)

Y- 0-は価格、1-は値です。

と大丈夫です。

これで問題が解決するなら、この解決策を使ってください。

もしこれで十分でなければ、もっといい方法を考え出すだろう。

 
o_o:

オーケー。

それで問題が解決するなら、それを使えばいい。

それで不十分なら、もっといいものを考え出すんだ。

いやいや、ちょっと誤解しているようだが......。

ひとつを除いては全部解けた! ペアの名前を全部知りたいんだ! 既知のものを得る方法はわかったけど、未知のものを得る方法は?

 
ああ、僕はたぶん君の問題が何なのか理解していなかったんだ。
 
o_o:
特定のデータを実証する

  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);


2018.02.21 14:03:39.861 jason_test(EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.862 jason_test (EURUSD,W1) array out of range in 'json.mqh' (597,19)