Bibliotecas: Serialização e desserialização de JSON (MQL nativo) - página 16

 

Você já conhece o exemplo da referência a WebRequest() - e como ela transforma os dados carregados em algo legível?

Só então você poderá analisar o texto do Jason.

Dokumentation zu MQL5: Netzwerkfunktionen / WebRequest
Dokumentation zu MQL5: Netzwerkfunktionen / WebRequest
  • www.mql5.com
WebRequest - Netzwerkfunktionen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Carl Schreiber #:

Você já conhece o exemplo da referência a WebRequest() - e como ela transforma os dados carregados em algo legível?

Só então você poderá analisar o texto do Jason.

Ok, agora mudei um pouco, o que já me ajudou muito.

A mensagem via impressão é a seguinte:

2022.12.21 20:20:48.718 jason_test (GER40,H1) O arquivo foi baixado com sucesso, tamanho 17 bytes.

O que, para mim, significa que há uma resposta do servidor que eu preciso analisar de alguma forma. E foi criado um arquivo chamado url que, na verdade, contém a resposta que eu estava procurando.

Obrigado, Carl, por sua ajuda
 

Você pode atualizar o Add some function likes?

JAval j1; j1.Add(1);
j1["a"] = 1;
j1["b"] = 2;


Você pode adicionar essas funções?

j1.Del("a");
j1.Pop();
j1.shift();
j1.sort();
j1.sort();
 

Após a próxima atualização, ele parou de funcionar. No registro - números de linha com erros:

Build 3756.

 

Há uma estrutura como esta

[

{

"ticket":671073362

},

{

"ticket":111111111

}

]


Quero obter 2 itens. Tanto o primeiro tíquete quanto o segundo.

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

jv.Deserialize(js);

Print( jv["ticket"].ToStr());

Dessa forma, só tenho acesso ao primeiro. Como obter acesso ao segundo e aos subsequentes, se houver algum?

Esse problema foi discutido aqui https://www.mql5.com/ru/forum/63015/page3#comment_2844920, mas lá o autor envolveu essa estrutura em uma matriz nomeada, como esta.

string js = "{\"array\":[{\"ticket\":671073362},{\"ticket\":111111111}]}";

jv.Deserialize(js);

for(int i = 0; i < ArraySize(jv["array"].m_e); i++)
   {
      Print(jv["array"].m_e[i]["ticket"].ToInt());
   }

É assim que tudo é encontrado. Mas o que eu faço se não puder alterar a estrutura json? Como obter essa matriz e percorrer os elementos?

 
Nikita Chernyshov #:

Há essa estrutura

[

{

"ticket":671073362

},

{

"ticket":111111111

}

]

...

A string especificada não corresponde à estrutura fornecida no início e não é uma string json válida:

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

Deveria ser:

string js = "[{\"ticket\":671073362},{\"ticket\":111111111}]";

Essa observação é apenas sobre a especificação do json-a, sem levar em conta como ele é implementado em uma biblioteca específica. Eu uso uma diferente.

 
Stanislav Korotky #:

A string especificada não corresponde à estrutura fornecida no início e não é uma string json válida:

Deveria ser:

Essa observação é apenas sobre a especificação do json-a, sem levar em conta como ele é implementado em uma biblioteca específica. Eu uso uma diferente.

bem, é isso mesmo, está faltando quadrados, mas não ajuda com eles)

[Excluído]  
Muitos argumentos para a macro do tipo função 'DEBUG_PRINT_KEY' JAson.mqh 391 40
if (type != jtUNDEF) { DEBUG_PRINT_KEY(); return false; }  // se o valor já tiver um tipo, isso é um erro

Veja a declaração da macro 'DEBUG_PRINT_KEY' JAson.mqh

#ifdef  DEBUG
    #define  DEBUG_PRINT_KEY() Print(key+" "+string(__LINE__))
#else
    #define  DEBUG_PRINT_KEY()
#endif

Esse aviso está aparecendo na compilação mais recente do mql5

Alguma ideia de como corrigi-lo?

 
Arpit T #:
Alguma ideia de como consertar?

Remova os parênteses

if (type != jtUNDEF) { DEBUG_PRINT_KEY; return false; }  // se o valor já tiver um tipo, isso é um erro
#ifdef  DEBUG
    #define  DEBUG_PRINT_KEY Print(key+" "+string(__LINE__))
#else
    #define  DEBUG_PRINT_KEY
#endif
[Excluído]  
Manuel Alejandro Cercos Perez #:

Remova os parênteses

corrigido, obrigado

Estou anexando o código corrigido aqui

Arquivos anexados:
JAson_1.13.mqh  45 kb