ライブラリ: JSON

 

JSON:

JSONフォーマットのシリアライズとデシリアライズ

Author: Kuzma Shevelev

 
Automated-Trading:

JSON

著者:Kuzma Shevelev


。ネットワーク・クエリ用のデータ生成にはとても便利だと思うのですが、このライブラリがロシア人の間でしか表示されないのはなぜか教えていただけますか?

 
私はjAsonを使って いるので、あなたの実装を見ていません。あなたの実装に利点はありますか?比較できますか?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.
 
Edgar Akhmadeev #:
私はjAsonを使って いるので、あなたの実装を見ていません。あなたの実装に利点はありますか?比較できますか?

1.サイズ、20kb対30kb

2.どのようなJSON構造にも柔軟に対応できる
- 値の型を定義するメソッドがあるため、値が異なる型になる場合に対応できる
- オブジェクトのキーを取得するメソッドがあるため、キーが事前にわからない場合に対応できる
- ユーザーフレンドリーなライブラリインタフェースがあるため、JSON構造への入力プロセスが便利でわかりやすい

3.明確で人間が読みやすいソースコード
- ライブラリの動作を簡単に理解することができ、動作原理を透明化
- ライブラリの明確な構造により、ネットワークリクエストとレスポンスのデバッグに便利
- 演算子のオーバーロードを使用せず、明確な名前のメソッドを提供するため、どの開発者にとっても理解しやすいコードとなっている。

 
Kuzma Shevelev #:


ネットワーク・クエリーのデータ作成にはとても便利だと思うのですが、このライブラリーに気づいて利用する人はまずいないと思います。

というのも、コードベースは(少なくとも今のところは)そのように作られているからです。デフォルトでは、コードは1つの言語バージョンにのみ登録されることが保証されており(英語ブランチでも可能)、他の言語への転送は何らかの条件下でのみ行われます(人気投票やモデレーターのコマンドなど、自動的に指定されるはずです)。

jsonテーマ自体については、例えばalgobookの toyjson.mqhの最小限の 実装もあります。

Учебник по MQL5: Расширенные средства языка / Проекты / Клиентская программа сигнального сервиса на MQL5
Учебник по MQL5: Расширенные средства языка / Проекты / Клиентская программа сигнального сервиса на MQL5
  • www.mql5.com
Итак, мы решили, что текст в сообщениях сервиса будет в формате JSON. В наиболее распространенном варианте, JSON представляет собой текстовое...
 
Kuzma Shevelev #:

1.サイズ、20kb対30kb

2.どのようなJSON構造にも柔軟に対応できる
- 値の型を定義するメソッドがあり、値が異なる型になり得る場合に対応できる
- オブジェクトのキーを取得するメソッドがあり、キーが事前にわからない場合に対応できる
- 便利なライブラリ・インターフェースで、JSON構造を埋めるのが便利でわかりやすい。

3.明確で人間が読みやすいソースコード
- ライブラリの動作を簡単に理解することができ、動作原理を透明化
- ライブラリの明確な構造により、ネットワークリクエストとレスポンスのデバッグに便利
- 演算子のオーバーロードを使用せず、明確な名前のメソッドを提供することで、どの開発者にも理解しやすいコードを実現。

ここで私は、「理解しやすく、人間が読めるソースコード」とは何かということまで考えることにした:-)

あなたは、jAsonの作者と同じように、コメントやドキュメントを書くことさえしなかった。そして、演算子はユーザーにとってより便利でわかりやすいものであり、演算子を避けることはメリットよりもデメリットの方が大きい。

 
Stanislav Korotky #:

コードベースは(少なくとも今のところは)そのように作られています。デフォルトでは、コードは1つの言語バージョンにのみ登録されることが保証されており(英語ブランチでも可能です)、他の言語への移植は何らかの条件下でのみ可能です(人気投票やモデレーターのコマンドなど、自動的に指定されるはずです)。

jsonテーマ自体は、例えばalgobookの toyjson.mqhの最小限の 実装もあります。



しかし、いずれにせよ、このライブラリは、私が実装したインターフェイスを気に入ってくれるユーザーを見つけられると思います。

 
Kuzma Shevelev #:


ネットワーク・クエリーのデータ作成にはとても便利だと思うのですが、このライブラリーに気づいて利用する人はまずいないと思います。

あなたのコードを英語圏の聴衆に見てもらうには、英語のフォーラムに投稿すべきです。

英語のフォーラムに行く。


彼らのコードベースに行く。



コードを追加する。


ここで、1つのフォーラム・セグメントから別のセグメントにコードが自動的にコピーされるわけではありません。

 

長い間JAsonを使ってきた。今回、本に載っていたToyJson3を含む3つのライブラリの速度を比較することにした。サンプルjsonとして、Binanceの "exchangeInfo "への応答を768Kbのサイズで取り出した。これは、ライブラリが文字列から読み取るときに、その全体が解析される。結果は

JAson - 122 ms
ToyJson3 - 54 ms
json - 48 ms

また、jsonはデシリアライズだけでなくシリアライズも可能で、Binanceの先物APIに必要です。他のライブラリに存在するかどうかは知らない。

しかし、私はOOPが得意ではないので、この構造は全く理解できない:

    JSON::Object* json1 = new JSON::Object()
        .setProperty("number", 123456)
        .setProperty("string", "text")
        .setProperty("boolean", true)
        .setProperty("object", new JSON::Object()
            .setProperty("number", 123456)
            .setProperty("string", "text")
            .setProperty("boolean", true)
            .setProperty("array", new JSON::Array())
        )
        .setProperty("array", new JSON::Array()
            .add(true) // ブーリアン
            .add(123456) // 数
            .add("string") // 文字列
            .add(new JSON::Object()
                .setProperty("number", 123456)
                .setProperty("string", "text")
            )
            .add(new JSON::Array()
                .add(true)
                .add(123456)
                .add("string")
            )
        );

    string exampleText = json1.toString();
 
公平を期すために、ToyJson3についても調べてみるつもりだ。
 
Edgar Akhmadeev #:
この構文がまったく理解できません
ライブラリのコードは見ていませんが、あなたが提示した断片から判断すると、setPropertyメソッドとAddメソッドはオブジェクト(this)への参照を返すので、ドット経由でクラスメソッドを再度参照することができます。 これにより、このような呼び出しの連鎖を集めることができます。 これにより、このような呼び出しの連鎖を集めることができます。