Bibliotecas: JSON Serialization and Deserialization (native MQL) - página 9

 
o_o:

1.12

establecer paso 100 en ArrayResize

¿Tengo que actualizar las fuentes en Codebase?

 
Delta.800:

Estimados especialistas Por favor, ayúdenme a entender la biblioteca. ( No soy bueno en la programación orientada a objetos todavía, así que no puedo entender el código de la biblioteca en sí y el artículo dedicado al intercambio BTC-E. es por eso que pido un ejemplo sencillo como en el post ).

Necesito parsear dos api públicas del exchange WEX.NZ.

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

desde aqui, necesito obtener todos los pares disponibles (btc_usd, btc_rur, ...) en un array (solo nombres de pares, sin parametros, puedo obtener parametros por nombres conocidos...).


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


y desde aquí obtener el precio y el valor de las órdenes en dos matrices (asks y bids).

¡¡¡Os agradecería mucho vuestra ayuda!!! ¡Gracias de antemano!


muestra tu código donde lo dejaste, ¿qué está fallando exactamente?
 
Rashid Umarov:

¿Tengo que actualizar las fuentes en Codebase?

llevan ahí mucho tiempo
 

Buen trabajo, ¡felicidades!

Sin embargo... Si obtienes datos rotos para la deserialización (el número de comillas o corchetes de apertura no es igual al número de comillas o corchetes de cierre), el programa se bloquea con un mensaje sobre array overrun. Y esto es muy malo, tales momentos deben tenerse en cuenta cuando se trabaja con arrays, al menos si no hay una comprobación de la corrección de los datos de entrada.

 
Andrey Dik:

Buen trabajo, felicidades.

Sin embargo... Si obtienes datos rotos para la deserialización (el número de comillas o corchetes de apertura no es igual al número de comillas o corchetes de cierre), el programa se bloquea con un mensaje sobre array overrun. Y esto es muy malo, tales momentos deben tenerse en cuenta cuando se trabaja con arrays, al menos si no hay un control sobre la corrección de los datos de entrada.

Por favor, demuestre los datos específicos
 
o_o:


muestra tu código donde lo dejaste, en qué estás fallando exactamente

En general, ni siquiera puedo averiguar cómo obtener los nombres de todos los pares del primer enlace :-(

---

Consigo acceder a los parámetros de un par desde el primer enlace de la siguiente manera:

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

donde ttt es la cadena obtenida de la petición web.

Desde el segundo enlace, he resuelto el problema, obtengo acceso de la siguiente manera:

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

X- número de orden (a partir de cero)

Y- 0- es el precio, 1- es el valor .

 
Delta.800:

De todos modos, ni siquiera puedo averiguar cómo obtener los nombres de todos los pares del primer enlace :-(

---

Consigo acceder a los parámetros de un par desde el primer enlace de esta manera:

donde ttt es la cadena obtenida de la petición web.

Desde el segundo enlace, he resuelto el problema, obtengo el acceso de la siguiente manera:

donde

X- número de pedido (empezando por cero)

Y- 0- es el precio, 1- es el valor .

y ok.

Si ahora resuelve tu problema, utiliza esta solución.

Si no es suficiente, ya se te ocurrirá algo mejor.

 
o_o:

De acuerdo.

Si resuelve tu problema ahora, úsalo.

Si no es suficiente, ya se te ocurrirá algo mejor.

No, no, no. Has entendido un poco mal...

¡Lo he resuelto todo menos una cosa! ¡Necesito obtener todos los nombres de los pares! Entiendo cómo obtener los conocidos, pero ¿cómo obtener los desconocidos?

 
Si, probablemente no entendí cual era tu problema, por las líneas que mostraste pudiste conseguir todo.
 
o_o:
Demostrar datos 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) {"asdasdasdasd":{"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) {"asdasdasdasd":{"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)