Librerías: JSON

 

JSON:

Serialización y deserialización del formato JSON

Author: Kuzma Shevelev

 
Automated-Trading:

JSON:

Autor: Kuzma Shevelev

¿Puede decirme por qué la biblioteca se muestra sólo entre los rusos?
. Creo que así es poco probable que se note y se pueda utilizar, aunque creo que sería muy conveniente para generar datos para consultas de red.

 
No he mirado tu implementación porque uso jAson. ¿Hay alguna ventaja en su implementación? ¿Puede hacer una comparación?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.
 
Edgar Akhmadeev #:
No he mirado tu implementación porque uso jAson. ¿Hay alguna ventaja en su implementación? ¿Puede hacer una comparación?

1. Tamaño, 20kb vs 30kb

2. Permite trabajar de forma flexible con cualquier estructura JSON
- Existen métodos para definir tipos de valores, lo que permite manejar casos en los que el valor puede ser de diferentes tipos
- Existen métodos para obtener claves de objetos, lo que permite manejar casos en los que las claves no se conocen de antemano
- Interfaz de biblioteca amigable, hace que el proceso de rellenar la estructura JSON sea cómodo y comprensible.

3. Código fuenteclaro y legible
- Permite entender fácilmente el trabajo de la librería, haciendo transparente el principio de su trabajo
- La estructura clara de la librería permitirá depurar cómodamente las peticiones y respuestas de red
- No utiliza sobrecarga de operadores, proporcionando métodos con nombres claros, haciendo el código comprensible para cualquier desarrollador.

 
Kuzma Shevelev #:

¿Puede decirme por qué la biblioteca sólo aparece entre los rusos?
Creo que es tan improbable que alguien se fije en ella y la utilice, aunque creo que sería muy conveniente para generar datos para consultas en la red.

Debido a que la base de código se hace de esa manera (al menos por ahora) - por defecto el código está garantizado para ser registrado sólo en una versión de idioma (también podría hacerlo en la rama Inglés), y la transferencia a otros idiomas - sólo bajo algunas condiciones (se debe especificar - de forma automática por la popularidad, por el comando de los moderadores o de alguna otra manera).

En cuanto al tema json en sí, también hay por ejemplo una implementación minimalista de toyjson.mqh de algobook.

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

1. Tamaño, 20kb frente a 30kb

2. Permite trabajar de forma flexible con cualquier estructura JSON
- Existen métodos para definir tipos de valores, lo que permite manejar casos en los que el valor puede ser de diferentes tipos
- Existen métodos para obtener claves de objetos, lo que permite manejar casos en los que las claves no se conocen de antemano
- Interfaz de biblioteca conveniente, hace que sea conveniente y comprensible rellenar la estructura JSON.

3. Código fuenteclaro y legible
- Permite entender fácilmente el trabajo de la librería, haciendo transparente el principio de su trabajo
- La estructura clara de la librería permitirá depurar cómodamente las peticiones y respuestas de red
- No utiliza sobrecarga de operadores, proporcionando métodos con nombres claros, haciendo el código comprensible para cualquier desarrollador.

aquí incluso decidí ver lo que " Código fuente comprensible y legible por humanos" :-)

tachar el punto 3 - usted, como el autor de jAson, ni siquiera se molestó en escribir comentarios y documentación. Y con los operadores es más conveniente y claro para el usuario, por lo que evitarlos es más una desventaja que una ventaja.

 
Stanislav Korotky #:

Debido a que la base de código se hace de esa manera (al menos por ahora) - por defecto el código está garantizado para ser registrado sólo en una versión de idioma (también se podría hacer en la rama Inglés), y la portabilidad a otros idiomas - sólo bajo algunas condiciones (se debe especificar - de forma automática por la popularidad, por orden de los moderadores o de alguna otra manera).

En cuanto al tema json en sí, también hay, por ejemplo, una implementación minimalista de toyjson.mqh de algobook.

He mirado, realmente existe, creo que incluso una versión muy buena

Pero en cualquier caso, creo que esta librería encontrará su público, al que le gustará la interfaz que he implementado para usarla.

 
Kuzma Shevelev #:

¿Puede decirme por qué la biblioteca sólo aparece entre los rusos?
Creo que es tan improbable que alguien se fije en ella y la utilice, aunque creo que sería muy conveniente para generar datos para consultas en la red.

Para que tu código sea visible para el público angloparlante, deberías publicarlo en un foro en inglés.

Vaya al foro inglés.


Vaya a su codobase.



Añada el código.


Ahora, el código de un segmento del foro no se copia automáticamente a otro segmento, tienes que hacerlo tú mismo.

 

He estado usando JAson durante mucho tiempo. Ahora decidí comparar la velocidad de 3 bibliotecas, incluyendo ToyJson3 del libro. Como json de muestra tomé la respuesta de Binance a "exchangeInfo" con un tamaño de 768 Kb. Es parseado en su totalidad cuando la librería lo lee de una cadena, entonces selecciono un caracter y leo todos sus datos. Resultado:

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

Además, json no sólo tiene deserialización sino también serialización, y es necesario para la API de futuros de Binance. No sé si existe en otras librerías, es difícil analizar los códigos de otras personas.

Pero no soy bueno en OOP, y no entiendo esta construcción en absoluto:

    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) // booleano
            .add(123456) // número
            .add("string") // cadena
            .add(new JSON::Object()
                .setProperty("number", 123456)
                .setProperty("string", "text")
            )
            .add(new JSON::Array()
                .add(true)
                .add(123456)
                .add("string")
            )
        );

    string exampleText = json1.toString();
 
Para ser justos, voy a mirar en ToyJson3 también - un poco de trabajo de ahorro de memoria se ha hecho allí, es importante.
 
Edgar Akhmadeev #:
No entiendo en absoluto esta construcción
No he mirado el código de la librería, pero a juzgar por el fragmento que has presentado, los métodos setProperty y Add devuelven una referencia al objeto (this), por lo que puedes volver a hacer referencia al método de la clase mediante un punto. Esto te permite recopilar dichas cadenas de llamadas. Esto te permite recopilar dichas cadenas de llamadas.