Realization of JSON protocol in mql4 / mql5. You can create JSON object with data of different types and run serialization and deserialization of JSON data. Installing Usage Add and create object to work with JSON data. See simple example for easy understand: WARNING : To assign other object to current, use method instead of using the "=" sign...
ライブラリーはとても便利です。しかし、double型の値をシリアライズする際に、精度が 大きく損なわれることに遭遇しました。
例
double minutes_open[] = {0.95347, 0.95317, 0.95324}.
for (int i=0; i<ArraySize(minutes_open); ++i) jv["minutes_open"].Add(minutes_open[i]);
シリアライズ後、次のようになる:
"minutes_open":[9.53e-01,9.53e-01,9.53e-01]
つまり、最後の2つの有効文字が失われ、配列内のすべての値が互いに等しくなります。その結果、このデータに基づく計算はすべて無駄になってしまう......。
結局、配列の値を文字列に変換することで回避した。
こんにちは!
JAsonライブラリのドキュメントはこのサイトにはありません。より詳細なドキュメントを書き、ユニットテストを追加しました: https://github.com/vivazzi/JAson。誰かの役に立つかもしれません。
内部 Json (CJAVal オブジェクト) を使用する際のバグについて説明した issue を作成しました: https://github.com/vivazzi/JAson/issues/1.
CJAValオブジェクトが、オブジェクトとして別のCJAValオブジェクトに正しく割り当てられない:
回避策として、Set()メソッドを使用する必要があります:
このバグは何年も前からあるものなので、どなたか助けていただけると、多くのMQL開発者に感謝します。
みなさん、こんにちは!
JAsonのドキュメントはこのサイトでは完全ではないので、より詳細なドキュメントhttps://github.com/vivazzi/JAson/ を書き、ユニットテストを追加しました。
そして、ネストされた Json (CJAVal オブジェクト) を使用する際の問題を説明しました: https://github.com/vivazzi/JAson/issues/1.
CJAValオブジェクトは、"="記号を使用すると正しく保存されません(空のキーが保存されます):
はい、このサイトのライブラリ・ページに添付されているテストでは、Set() メソッドを使う必要があることがわかります:
しかし、もし誰かがライブラリを修正して、"="記号を使ってネストしたJson構造を保存できるようにしてくれれば、多くの人が助かるだろう。ネストしたCJAValを 通常の方法で"="で 代入しようとすると、ライブラリにエラーがあると考える人がいることに気づいたからです。
これがMQL言語内で可能であればいいのですが。私 自身も修正しようと試みましたが、 MQL言語について深い知識を持っているわけではありませんし、今のところ"="を使った代入はうまくいっていません。
こんにちは!
JAsonライブラリのドキュメントはこのサイトでは完全ではありません。より詳細なドキュメントを書き、ユニットテストを追加しました: https://github.com/vivazzi/JAson。誰かの役に立つかもしれません。
innerJson(CJAValオブジェクト)を使うバグの説明があるissueを作成しました: https://github.com/vivazzi/JAson/issues/1.
CJAValオブジェクトが、オブジェクトとして別のCJAValオブジェクトに正しく代入されない:
回避策として、Set()メソッドを使用する必要があります:
もし誰かが助けてくれるなら、このバグは長年存在しているので、多くのMQL開発者は感謝するでしょう。
問題はCopyメソッドにあります。
キーがサブオブジェクトのキーで上書きされてしまうのです。あなたの例では、"b "が空の "nested_data "のキーで上書きされてしまいます。
私はこの簡単な解決策を使いました:
Laszlo Tormasi さん、ありがとうございます!
あなたの修正でJAsonを更新しました: https://github.com/vivazzi/JAson
入れ子になったJson構造を"="記号で 代入する問題は、Laszlo Tormasi 氏によってhttps://www.mql5.com/en/forum/65320/page3#comment_21453129。
JAsonバージョンは https://github.com/vivazzi/JAson。
問題を理解しようとし、助けてくれた皆さんに感謝します!
負の配列添字で 発生していたエラー("array out of range")を修正。これにより、[]演算子はNULLを返すようになった。
処理はこのようになる。
また、便宜上ToIntIメソッドを追加した。ToIntはlongを返すので。
ネストされたjsonの読み方がわかりません。
このような文字列があります:
string str= { "key1": [ { "key2": [ { "key3": "val)" }, {}, {} ] } ] }どのように読み込んで要素にアクセスするのですか?
どうやってもうまくいきません。ネストされたjsonの読み方がわかりません。
このような文字列があります:
これを読んで要素にアクセスするにはどうすればいいのでしょうか?
何度やっても理解できません。string str; CJAVal data; str= "{" " \"key1\": [" " {" " \"key2\": [" " {" " \"key3\": \"val)\"" " }," " {}," " {}" " ]" " }" " ]" "}"; data.Deserialize(str); Print(data["key1"][0]["key2"][0]["key3"].ToStr());もし、json文字列の構造が理解できなかったり、何か問題が発生した場合は、次のようにしてください:
json文字列の 構造を簡単に理解するには、このサイト https://jsoneditoronline.org/。