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

 
o_o:

1.12

Definir etapa 100 em ArrayResize

Preciso atualizar os códigos-fonte no Codebase?

 
Delta.800:

Prezados especialistas! Por favor, ajudem-me a entender a biblioteca. (Ainda não sou bom em programação orientada a objetos, portanto, não consigo entender o código da biblioteca em si e o artigo dedicado à bolsa BTC-E. Por isso, peço um exemplo simples, como na postagem ).

Preciso analisar duas APIs públicas da bolsa WEX.NZ.

https://wex.nz/api/3/info

A partir daqui, preciso obter todos os pares disponíveis (btc_usd, btc_rur, ...) em uma matriz (apenas os nomes dos pares, sem parâmetros, posso obter parâmetros por nomes conhecidos...).


https://wex.nz/api/3/depth/btc_usd


e, a partir daí, obter o preço e o valor das ordens em duas matrizes (pedidos e ofertas).

Ficarei muito grato por sua ajuda! Desde já, obrigado!


Mostre seu código de onde parou, o que exatamente está falhando?
 
Rashid Umarov:

Preciso atualizar os códigos-fonte no Codebase?

estão lá há muito tempo
 

Bom trabalho, parabéns!

No entanto... Se você obtiver dados quebrados para a desserialização (o número de aspas de abertura ou colchetes não é igual ao número de aspas de fechamento ou colchetes), o programa será interrompido com uma mensagem sobre a sobrecarga da matriz. E isso é muito ruim; esses momentos devem ser levados em conta ao trabalhar com matrizes, pelo menos se não houver verificação da exatidão dos dados de entrada.

 
Andrey Dik:

Bom trabalho, parabéns!

No entanto... Se você obtiver dados quebrados para a desserialização (o número de aspas de abertura ou colchetes não é igual ao número de aspas de fechamento ou colchetes), o programa será interrompido com uma mensagem sobre a sobrecarga da matriz. E isso é muito ruim; esses momentos devem ser levados em conta ao trabalhar com matrizes, pelo menos se não houver verificação da exatidão dos dados de entrada.

Por favor, demonstre os dados específicos
 
o_o:


mostre seu código de onde parou, no que exatamente está falhando

Em geral, não consigo nem mesmo descobrir como obter os nomes de todos os pares do primeiro link :-(

---

Obtenho acesso aos parâmetros de um par do primeiro link da seguinte maneira:

CJAVal dataM;
dataM.Deserialize(ttt);  
... 
Print(dataM["pairs"]["btc_usd"]["fee"].ToDbl());

onde ttt é a string obtida da solicitação da Web.

No segundo link, resolvi o problema e obtive acesso da seguinte forma:

Print(dataM["btc_usd"]["asks"].m_e[1][0].ToDbl());
onde
m_e[X][Y]

X - número do pedido (a partir de zero)

Y- 0- é o preço, 1- é o valor.

 
Delta.800:

De qualquer forma, não consigo nem mesmo descobrir como obter os nomes de todos os pares do primeiro link :-(

---

Obtenho acesso aos parâmetros de um par do primeiro link da seguinte maneira:

onde ttt é a string obtida da solicitação da Web.

No segundo link, resolvi o problema e obtive acesso da seguinte forma:

onde

X - número do pedido (a partir de zero)

Y- 0- é o preço, 1- é o valor.

e ok.

Se isso resolver seu problema agora, use essa solução.

Se ela não for suficiente, você encontrará algo melhor.

 
o_o:

Está bem.

Se isso resolver seu problema agora, use-o.

Se não for suficiente, você encontrará algo melhor.

Não, não, não. Você entendeu um pouco mal...

Eu resolvi tudo, exceto um: preciso obter todos os nomes dos pares! Eu sei como obter os conhecidos, mas como obter os desconhecidos?

 
Sim, eu provavelmente não entendi qual era o seu problema, pelas linhas que você mostrou que conseguiu obter tudo.
 
o_o:
Demonstrar dados específicos

  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);


2018.02.21 14:03:39.861 jason_test(EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.862 jason_test (EURUSD,W1) array out of range in 'json.mqh' (597,19)