ライブラリ: JSONシリアライズとデシリアライズ(ネイティブMQL)

 

JSONシリアライズとデシリアライズ(ネイティブMQL):

JSONプロトコルのシリアライズとデシリアライズ。このコードは高速のС++ライブラリからポートされました。

作者: o_O

 

ライブラリはMQL4とMQL5で動作します。

感謝の気持ちは、MQLのウェブ・リソースを使った実践的な仕事の例という形で受け取ります。)

 

MT4で動作。MT5ではStack overflowというエラーが表示されます。オーバーフローの場所に関する情報はありません。デバッガは単にクラッシュします。

このエラーは初歩的な例で表示されます:

#include <jason.mqh>

void OnStart()
{
   CJAVal json;
   json["item1"] = "value1";
   json["item2"] = "value2";
}

判明したように、スクリプトは90行目でクラッシュし、'm_e'のサイズが1から2倍に増加した:

ArrayResize(m_e,c+1);


追伸:MT5 ビルド 1210

 
a.p:

MT4で動作。MT5ではStack overflowというエラーが表示されます。オーバーフローの場所に関する情報はありません。デバッガは単にクラッシュします。

このエラーは初歩的な例で表示されます:

判明したように、スクリプトは90行目でクラッシュし、'm_e'のサイズが1から2倍に増加した:


追伸:MT5 ビルド 1210

バグが修正されました。修正はターミナルの次のビルドに含まれます。
 

ライブラリをありがとう。

このライブラリを使って、どうやって配列をくっつけるのかがわからないんだ。

例えば

string a[] = {"1", "2", "3"};
int b[] = {1, 2, 3};
double c[] = {1.1, 2.9, 3.03};

問題はCJAVal型の変数を宣言する レベルで発生します。CJAVal primer(jtARRAY, a); を使っても解決しません。

例で示された配列の例は、私にはうまくいきません。配列に10個の値がある場合はどうなるのでしょうか? CJAVal型の変数を新たに10個作らなければならないのでしょうか?

例題ファイルを補足または拡張していただけませんか?

p.s.私は初めてjsonフォーマットを使います。私はあなたのサンプルファイルのプログラムを勉強しました。

 

それは大変な仕事だね!何のために?小さな行から2、3の変数を取り出すためだ。

なぜ、あのような書式になっているのか?誰も調べようとしないのか?結局のところ、コードベースなのだ。

 
Dmitry Fedoseev:

それは大変な仕事だね!何のために?小さな行から2、3の変数を取り出すためだ。

なぜ、あのような書式になっているのか?誰も調べようとしないのか?結局のところ、コードベースなんだ。

私は、どんなデータでも素早くファイルに書き込み、素早く取り出すというアイデアに興味がある。libaが人間の目にとって読みやすいフォーマットになっていないのは残念だ。

コードは可能な限り簡略化した!

 
Виктор Василюк:

どんなデータでも素早くファイルに書き込んで、素早く取り出すというアイデアに興味があります。リブが人間の目にとって読みやすいフォーマットになっていないのは残念ですが :( おそらく自分自身のタスクのためにこのようなプログラムを書くことになるでしょう。

コードは可能な限り簡略化されている!

PHPやC#のシリアライゼーションとは違う。

ここには一匙の酸味がある:

   virtual CJAVal *FindKey(string akey) { 
      for(int i=0; i<ArraySize(m_e); i++) 
      if(m_e[i].m_key==akey) 
      return GetPointer(m_e[i]); 
      return NULL; 
   }
キーは単純な総当たりで検索される。大きなデータで素早く作業することはできない。
 
Dmitry Fedoseev:

PHPやC#のシリアライゼーションとは違うのだ。

ここにはスプーン1杯分のタールがある:

キーは単純な総当たり検索で見つかる。大きなデータを素早く扱うことはできないだろう。
ありがとう。別のライブラリを見つけた。うまく動いているようだ
 
Виктор Василюк:
ありがとう。別のリブを見つけた。問題なく動いているよう だ。
私が間違っていなければ、そこではハッシュの要素数が制限されている。
 
Dmitry Fedoseev:
ハッシュ要素の数には限りがあるんだ。
どうすればいいのでしょうか? これを解決する他の方法はないのでしょうか?