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

 
o_o:

アレイの深さは自分で作ったんだろ?

私が?- いや、僕の想像力はそこまで及ばないけど、これはいわば人生の具体例だ。

つまり、ポインタとか頭でっかちな構造とか使わずに、シンプルにできないかってことなんだ(ライブラリのコード自体は控えめに黙っておこう)。

 
Andrey Dik:

私が?- いや、私の想像はそこまでは行かないが、これはいわば人生の具体例だ。

ポインタや頭脳的な構造がないとできないのか、という意味だ。

ポインタを使わずにどこをどうしたいんだ? 具体的に何がしたいんだ? ログの中のjsonの一部か? "お金が欲しい "ボタンか?

 
o_o:

具体的に何が必要なのか? ログの中のjsonの一部か? "お金が欲しい "ボタンか?

そういうことだ:

CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]);

ライブラリのコードを知らずに、それが何なのか、なぜそれが必要なのかを推測することはできない。データへの単純なアクセスのために、ToDbl()のような関数があるはずだ。

このように「無知」なのは私だけではないようだ。

ss.例えばm_e-このちっぽけなものは何なのだろう?- これはgroupName 以外の何物でもない!もっと文字が多い?- いや、もっと明確だ。

結論:このライブラリーはとてもパワフルで不思議な働きをしてくれるが、「ドライな言語」で書かれているので、気の弱い人、看護婦さんや子供にはコードを見ない方がいい・・・。

 
Andrey Dik:

そういうことだ:

ライブラリーのコードを知らずに、それが何なのか、なぜそれが自分の望むものを得るために行われるべきなのか、どうやって推測できるのだろう? 単純なデータ・アクセスのためにToDbl()のような関数があるはずだ。

なるほど、「無知」なのは私だけではないようだ。

ss.例えばm_e-このちっぽけなものは何なのだろう?- これはgroupName 以外の何物でもない。- いや、もっと明確だ。

結論:このライブラリーはとても強力で、不思議な働きをしてくれるが、「乾いた言語」で書かれているので、気の弱い人、看護婦さんや子供にはコードを見ない方がいい...。

他のライブラリーを試した方がいいのでは?

以前使っていたのですが、MQL5(古いバージョン)ではコンパイルできませんでした。適応させる必要がある。もしくは新しいバージョンを試すか...

http://www.lordy.co.nf/mql4/

それについてはフォーラムのどこかにありました...

---------------------

ここです...

https://www.mql5.com/en/code/11134

 
Andrey Dik:

そういうことだ:

ライブラリーのコードを知らずに、それが何なのか、なぜそれが自分の望むものを得るために行われるべきなのか、どうやって推測できるのだろう? 単純なデータ・アクセスのためにToDbl()のような関数があるはずだ。

なるほど、「無知」なのは私だけではないようだ。

ss.例えばm_e-このちっぽけなものは何なのだろう?- これはgroupName 以外の何物でもない。- いや、もっと明確だ。

結論:このライブラリーはとても強力で、不思議な働きをしてくれるが、「ドライな言語」で書かれているので、気の弱い人、看護婦さんや子供にはコードを見ない方がいい・・・。

誰があなたにm_e配列の中に入ることを強要したのですか?

あなたがコードに何を求めているのかわからない。そして、あなたがどんなタスクを開発しているのかも知らない。

---

まず第一に、jsonはデータ転送のフォーマットであり、構造である。 もしあなたが受け取ったデータの構造を理解していないなら、それは私のクラスの問題ではなく、あなたの問題だ。データ・ソースのドキュメントを見て、そこで理解できることを探してください。

第二に、このクラスはフォーマットを扱うための基本的な機能(シリアライズ、構造の保存、便利なハンドリング)を実装している。

ある配列からデータを取得したいのであれば、便利なコードを書くだろう。

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

構造体全体を取得するためのループのような長ったらしいデタラメは書かない。何がなんだかわからない。

 
Delta.800:

他の図書館に行った方がいい

以前使っていたのですが、MQL5(古いバージョン)ではコンパイルできませんでした。それに合わせる必要がある。もしくは新しいバージョンを試すか...

http://www.lordy.co.nf/mql4/

フォーラムのどこかにそのことが書かれていました。

---------------------

これだ

https://www.mql5.com/en/code/11134

ありがとう、でも僕はセルゲイエフのコードを完全に信頼しているよ。

もちろん、ポインタについては私がバカだった。読みにくい......フィイ、なんてこった......。

 

o_o:

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

そして、構造全体をループするような長ったらしいデタラメはない。どういうことなんだろう?

グループ名によってデータが存在しなかったり、グループが完全でなかったり、グループ名がデータになかったり、他の何かだったり...。

この方法なら簡単でわかりやすいし、常に配列のサイズを チェックできるので、構造体を埋めるのに困ることもない:

js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());

 

このようなバリアントでは、存在しない要素をどう扱うかは明確ではない。

このように

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

このように

js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());


js["firm1"]またはjs.group [counterFirms]が表示されない場合、何を出力するのか?

この時点でnull 要素にアクセスされ、エラーが発生します。

 
o_o:

このようなバリアントでは、存在しない要素をどうするかは明確ではない。

このように

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

このように

js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());


js["firm1"]またはjs.group [counterFirms]が表示されない場合、何を出力するのか?

この時点でnull要素への参照となり、エラーとなる...

店には棚があり、ジャンルや著者ごとに異なる棚がある。そして、店に来るかもしれないし、来ないかもしれない本(データ)がある......。

そして、新しい本が入荷するたびに棚を設計し直さなければならないのか? もちろん、そんなことはない。

このように対処する:

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

グループ名を知る必要があり、もし受信データにグループがあっても、名前がない場合は? そして、もし....いろいろなことが起こります。

データのグループのサイズとその数をチェックするだけなら簡単だ。少なくとも一つのサイズが我々の構造体と一致しなければ、そのデータは壊れている。存在しない(あるいは空の)配列セルへのアクセスに関する問題はなく、到着したデータが正しいかどうかの不確実性もない。 また、何らかの理由でプログラムがクラッシュすることもない

削除済み  

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

{"":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}

しかし

{"2":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"3":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}