Bibliotecas: JSON

 

JSON:

Serialização e desserialização do formato JSON

Author: Kuzma Shevelev

 
Automated-Trading:

JSON:

Autor: Kuzma Shevelev

Você pode me dizer por que a biblioteca é exibida somente entre os russos?
. Acho que, assim, é improvável que ela seja notada e possa ser usada, embora eu ache que seria muito conveniente para gerar dados para consultas de rede.

 
Não dei uma olhada na sua implementação porque uso o jAson. Há alguma vantagem em sua implementação? Você pode fazer uma comparação?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.
 
Edgar Akhmadeev #:
Não dei uma olhada na sua implementação porque uso o jAson. Há alguma vantagem em sua implementação? Você pode fazer uma comparação?

1. Tamanho, 20kb vs 30kb

2. Permite trabalhar de forma flexível com qualquer estrutura JSON
- Há métodos para definir tipos de valores, o que permite lidar com casos em que os valores podem ser de tipos diferentes
- Há métodos para obter chaves de objetos, o que permite lidar com casos em que as chaves não são conhecidas antecipadamente
- A interface de biblioteca amigável torna o processo de preenchimento da estrutura JSON conveniente e compreensível.

3. Código-fonteclaro e legível
- Permite que você entenda facilmente o trabalho da biblioteca, tornando o princípio de seu trabalho transparente
- A estrutura clara da biblioteca permitirá que você depure convenientemente as solicitações e respostas de rede
- Não usa sobrecarga de operador, fornecendo métodos com nomes claros, tornando o código compreensível para qualquer desenvolvedor.

 
Kuzma Shevelev #:

Você pode me dizer por que a biblioteca é exibida somente entre os russos?
Acho que é tão improvável que alguém a perceba e use, embora eu ache que seria muito conveniente para gerar dados para consultas de rede.

Como a base de código é feita dessa forma (pelo menos por enquanto), por padrão, o código tem a garantia de ser registrado apenas em uma versão de idioma (você também pode fazer isso na ramificação em inglês) e transferido para outros idiomas apenas sob algumas condições (isso deve ser especificado - automaticamente por popularidade, por comando dos moderadores ou de alguma outra forma).

Quanto ao tema json em si, há também, por exemplo, uma implementação minimalista do toyjson.mqh do algobook.

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

1. Tamanho, 20kb vs. 30kb

2. Permite trabalhar de forma flexível com qualquer estrutura JSON
- Há métodos para definir tipos de valores, o que permite lidar com casos em que os valores podem ser de tipos diferentes
- Há métodos para obter chaves de objetos, o que permite lidar com casos em que as chaves não são conhecidas antecipadamente
- A interface conveniente da biblioteca torna conveniente e compreensível o preenchimento da estrutura JSON.

3. Código-fonteclaro e legível
- Permite que você entenda facilmente o trabalho da biblioteca, tornando transparente o princípio de seu trabalho
- A estrutura clara da biblioteca permitirá que você depure de forma conveniente as solicitações e respostas de rede
- Não usa sobrecarga de operador, fornecendo métodos com nomes claros, tornando o código compreensível para qualquer desenvolvedor.

Aqui eu até decidi ver o que é " Código-fonte compreensível e legível para humanos" :-)

risque o ponto 3 - você, assim como o autor do jAson, nem se deu ao trabalho de escrever comentários e documentação. E com os operadores é mais conveniente e claro para o usuário, portanto, evitá-los é mais uma desvantagem do que uma vantagem.

 
Stanislav Korotky #:

Como a base de código foi criada dessa forma (pelo menos por enquanto), por padrão, o código tem a garantia de ser registrado apenas em uma versão de idioma (você também pode fazer isso na ramificação em inglês), e a portabilidade para outros idiomas é feita apenas sob algumas condições (isso deve ser especificado - automaticamente por popularidade, por comando dos moderadores ou de alguma outra forma).

Quanto ao tema json em si, há também, por exemplo, uma implementação minimalista do toyjson.mqh do algobook.

Eu procurei, realmente existe, acho que até mesmo uma versão muito boa

Mas, de qualquer forma, acho que essa biblioteca encontrará seu público, que gostará da interface que implementei para usá-la.

 
Kuzma Shevelev #:

Você pode me dizer por que a biblioteca é exibida somente entre os russos?
Acho que é tão improvável que alguém a perceba e use, embora eu ache que seria muito conveniente para gerar dados para consultas de rede.

Para tornar seu código visível para o público de língua inglesa, você deve publicá-lo em um fórum em inglês.

Vá para o fórum em inglês.


Vá para a base de código deles.



Adicione o código.


Agora, o código de um segmento do fórum não é copiado automaticamente para outro segmento, você precisa fazer isso sozinho.

 

Estou usando o JAson há muito tempo. Agora decidi comparar a velocidade de três bibliotecas, incluindo a ToyJson3 do livro. Como exemplo de json, peguei a resposta da Binance para "exchangeInfo" com o tamanho de 768 Kb. Ela é analisada em sua totalidade quando a biblioteca a lê a partir de uma cadeia de caracteres, então seleciono um caractere e leio todos os seus dados. Resultado:

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

Além disso, o json não tem apenas desserialização, mas também serialização, e é necessário para a API de futuros da Binance. Não sei se ele existe em outras bibliotecas, pois é difícil analisar os códigos de outras pessoas.

Mas eu não sou bom em OOP e não entendo nada dessa construção:

    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") // 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();
 
Para ser justo, também vou dar uma olhada no ToyJson3 - foi feito um trabalho de economia de memória lá, isso é importante.
 
Edgar Akhmadeev #:
Não estou entendendo essa construção de forma alguma
Não examinei o código da biblioteca, mas, a julgar pelo fragmento que você apresentou, os métodos setProperty e Add retornam uma referência ao objeto (this), de modo que você pode fazer referência ao método da classe novamente por meio de um ponto. Isso permite que você colete essas cadeias de chamadas. Isso permite que você colete essas cadeias de chamadas.