Bibliothèque: JSON

 

JSON:

Sérialisation et désérialisation du format JSON

Author: Kuzma Shevelev

 
Automated-Trading:

JSON:

Auteur : Kuzma Shevelev

Pouvez-vous me dire pourquoi la bibliothèque n'est affichée que chez les Russes ?
. Je pense qu'il est peu probable qu'elle soit remarquée et qu'elle puisse être utilisée, même si je pense qu'elle serait très pratique pour générer des données pour les requêtes de réseau.

 
Je n'ai pas regardé votre implémentation car j'utilise jAson. Votre implémentation présente-t-elle des avantages ? Pouvez-vous faire une comparaison ?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.
 
Edgar Akhmadeev #:
Je n'ai pas regardé votre implémentation car j'utilise jAson. Votre implémentation présente-t-elle des avantages ? Pouvez-vous faire une comparaison ?

1. Taille, 20kb vs 30kb

2. Permet de travailler de manière flexible avec n'importe quelle structure JSON
- Il existe des méthodes pour définir les types de valeurs, ce qui permet de gérer les cas où les valeurs peuvent être de différents types
- Il existe des méthodes pour obtenir les clés des objets, ce qui permet de gérer les cas où les clés ne sont pas connues à l'avance
- Interface conviviale de la bibliothèque, ce qui rend le processus de remplissage de la structure JSON pratique et compréhensible.

3. Codesource clair et lisible par l'homme
- Permet de comprendre facilement le travail de la bibliothèque, rendant le principe de son travail transparent
- La structure claire de la bibliothèque vous permettra de déboguer facilement les demandes et les réponses du réseau
- N'utilise pas la surcharge des opérateurs, fournissant des méthodes avec des noms clairs, rendant le code compréhensible pour n'importe quel développeur.

 
Kuzma Shevelev #:

Pouvez-vous me dire pourquoi la bibliothèque n'est affichée que chez les Russes ?
Je pense qu'il est tellement improbable que quelqu'un la remarque et l'utilise, même si je pense qu'elle serait très pratique pour générer des données pour des requêtes sur le réseau.

Parce que la base de code est ainsi faite (du moins pour l'instant) - par défaut, le code est garanti pour être enregistré seulement dans une version linguistique (vous pourriez aussi le faire dans la branche anglaise), et le transfert vers d'autres langues - seulement sous certaines conditions (cela devrait être spécifié - automatiquement par la popularité, par la commande des modérateurs ou d'une autre manière).

En ce qui concerne le thème json lui-même, il y a aussi par exemple une implémentation minimaliste de toyjson.mqh de algobook.

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

1. Taille, 20kb vs. 30kb

2. Permet de travailler de manière flexible avec n'importe quelle structure JSON
- Il existe des méthodes pour définir les types de valeurs, ce qui permet de gérer les cas où les valeurs peuvent être de différents types
- Il existe des méthodes pour obtenir les clés des objets, ce qui permet de gérer les cas où les clés ne sont pas connues à l'avance
- Interface de bibliothèque pratique, ce qui rend pratique et compréhensible le remplissage de la structure JSON.

3. Codesource clair et lisible par l'homme
- Permet de comprendre facilement le travail de la bibliothèque, rendant le principe de son travail transparent
- La structure claire de la bibliothèque vous permettra de déboguer facilement les demandes et les réponses du réseau
- N'utilise pas la surcharge des opérateurs, fournissant des méthodes avec des noms clairs, rendant le code compréhensible pour n'importe quel développeur.

Ici, j'ai même décidé de voir ce qu'est un " code source compréhensible et lisible par l'homme" :-)

rayez le point 3 - vous, comme l'auteur de jAson, n'avez même pas pris la peine d'écrire des commentaires et de la documentation. Et avec les opérateurs, c'est plus pratique et plus clair pour l'utilisateur, donc les éviter est plus un inconvénient qu'un avantage.

 
Stanislav Korotky #:

Parce que la base de code est ainsi faite (du moins pour l'instant) - par défaut, le code est garanti d'être enregistré dans une seule version linguistique (vous pourriez aussi le faire dans la branche anglaise), et le portage vers d'autres langues - seulement sous certaines conditions (cela devrait être spécifié - automatiquement par la popularité, par la commande des modérateurs ou d'une autre manière).

En ce qui concerne le thème json lui-même, il y a aussi par exemple une implémentation minimaliste de toyjson.mqh de algobook.

J'ai regardé, il y en a vraiment, je pense même une très bonne version

Mais dans tous les cas, je pense que cette bibliothèque trouvera son public, qui aimera l'interface que j'ai implémentée pour l'utiliser.

 
Kuzma Shevelev #:

Pouvez-vous me dire pourquoi la bibliothèque n'est affichée que chez les Russes ?
Je pense qu'il est tellement improbable que quelqu'un la remarque et l'utilise, même si je pense qu'elle serait très pratique pour générer des données pour des requêtes sur le réseau.

Pour que votre code soit visible par le public anglophone, vous devriez le poster sur un forum anglais.

Allez sur le forum anglais.


Allez dans leur base de données.



Ajoutez le code.


Maintenant, le code d'un segment de forum n'est pas copié automatiquement dans un autre segment, vous devez le faire vous-même.

 

J'utilise JAson depuis longtemps. J'ai décidé de comparer la vitesse de 3 librairies, dont ToyJson3 du livre. Comme exemple de json, j'ai pris la réponse de Binance à "exchangeInfo" avec une taille de 768 Kb. Elle est analysée dans son intégralité lorsque la bibliothèque la lit à partir d'une chaîne de caractères, puis je sélectionne un caractère et lis toutes ses données. Résultat :

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

De plus, json n'a pas seulement la désérialisation mais aussi la sérialisation, et il est nécessaire pour l'API des contrats à terme de Binance. Je ne sais pas si cela existe dans d'autres librairies, il est difficile d'analyser les codes des autres.

Mais je ne suis pas bon en OOP, et je ne comprends pas du tout cette construction :

    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) // booléen
            .add(123456) // nombre
            .add("string") // chaîne de caractères
            .add(new JSON::Object()
                .setProperty("number", 123456)
                .setProperty("string", "text")
            )
            .add(new JSON::Array()
                .add(true)
                .add(123456)
                .add("string")
            )
        );

    string exampleText = json1.toString();
 
Pour être honnête, je vais également me pencher sur ToyJson3 - un travail d'économie de mémoire y a été effectué, c'est important.
 
Edgar Akhmadeev #:
Je ne comprends pas du tout cette construction
Je n'ai pas regardé le code de la bibliothèque, mais à en juger par le fragment que vous avez présenté, les méthodes setProperty et Add renvoient une référence à l'objet (this), de sorte que vous pouvez à nouveau faire référence à la méthode de classe via un point. Cela vous permet de collecter de telles chaînes d'appels. Cela vous permet de collecter de telles chaînes d'appels.