MQL4 - Como extrair dados de uma string Array/JSON

ezequielgodoy  

Rapazeada, estou me batendo para tentar extrair os dados da string abaixo.

[{"type":"success","message":""},{"id":"14058","symbol":"EURUSD","tp":"1.2271","sl":"1.2217","direction":"buy","risk":"2"},{"id":"14059","symbol":"EURUSD","tp":"1.2260","sl":"1.2190","direction":"buy","risk":"2"}]

Note que é um Array com objetos JSON internamente.

Tentei utilizar a biblioteca lordy tmbm, mas sem resultado.
Alguém já teve esta necessidade e conseguiu resolver?

Obrigado!

ezequielgodoy  

Abaixo o código que estou usando para ver se dá uma luz.


   string cookie=NULL,headers;
   char post[],result[];
   int res;
   string resultString=NULL;
   
   int timeout=5000;
   res=WebRequest("GET","localhost/api/signal/fx?r=op",cookie,NULL,timeout,post,0,result,headers); 
 
   resultString = CharArrayToString(result);
Drmqlbrazil5  
ezequielgodoy:

Abaixo o código que estou usando para ver se dá uma luz.


Não conheço a biblioteca lordy, nem outra coisa mais "sofisticada". Até que consiga, tente utilizar alguma função String, identificando padrões na sua string. Exemplo, veja que sempre aparece o nome do ativo (EURUSD), "sl", "tp", etc. Com StringFind() encontre esses padrões (exemplo <tp":">) e depois trate a informação que segue. Ou, conte quantos caracteres até o dado desejado, exemplo, há 71 caracteres até 1.2271 e faça 'tp[i]=StringToDouble(StringSubstr(seustring, 71, 6))'.

Abraços

Gustavo Enedir Hennemann  
Drmqlbrazil5:

Não conheço a biblioteca lordy, nem outra coisa mais "sofisticada". Até que consiga, tente utilizar alguma função String, identificando padrões na sua string. Exemplo, veja que sempre aparece o nome do ativo (EURUSD), "sl", "tp", etc. Com StringFind() encontre esses padrões (exemplo <tp":">) e depois trate a informação que segue. Ou, conte quantos caracteres até o dado desejado, exemplo, há 71 caracteres até 1.2271 e faça 'tp[i]=StringToDouble(StringSubstr(seustring, 71, 6))'.

Abraços

Eu também utilizo bastante esta maneira de trabalhar com JSON acrescentando ainda a função StringSplit() para separar as partes. Mas quanto mais complexo o JSON pior fica.

Algumas sugestões de bibliotecas:

https://www.mql5.com/pt/code/13663

https://www.mql5.com/pt/code/11134

Serialização e desserialização de JSON (MQL nativo)
Serialização e desserialização de JSON (MQL nativo)
  • votos: 36
  • 2015.11.05
  • ---
  • www.mql5.com
Serialização e desserialização do protocolo JSON. O código é transferido de uma biblioteca С++ o com alta velocidade. Exemplo prático: autorização num site e analisar a...
Razão: