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

 

¿Ya conoce el ejemplo de la referencia a WebRequest() - y cómo convierte los datos cargados en algo legible?

Sólo entonces se puede analizar el texto 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 #:

Ya conoces el ejemplo de la referencia a WebRequest() - ¿y cómo convierte los datos cargados en algo legible?

Sólo entonces se puede analizar el texto Jason.

Bien, ahora lo he cambiado ligeramente. Eso ya me ha ayudado mucho.

El mensaje a través de la impresión dice:

2022.12.21 20:20:48.718 jason_test (GER40,H1) El archivo se ha descargado correctamente, tamaño 17 bytes.

Lo que para mí significa que hay una respuesta del servidor que tengo que analizar de alguna manera. Y se creó un archivo llamado url que en realidad contiene la respuesta que estaba buscando.

Gracias Carl por tu ayuda
 

Puede actualizar Añadir algunas funciones le gusta

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


¿Puedes añadir estas funciones?

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

Después de la siguiente actualización dejó de funcionar. En el registro - números de línea con errores:

Build 3756.

 

Hay una estructura como ésta

[

{

"ticket":671073362

},

{

"ticket":111111111

}

]


Quiero obtener 2 elementos. Tanto el primer ticket como el segundo.

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

jv.Deserialize(js);

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

De esta forma sólo tengo acceso al primero. ¿Cómo acceder al segundo y a los siguientes, si los hay?

Este problema se discutió aquí https://www.mql5.com/ru/forum/63015/page3#comment_2844920, pero allí el autor envolvió tal estructura en un array con nombre, así.

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());
   }

Así se encuentra todo. pero ¿qué hago si no puedo cambiar la estructura json? ¿Cómo obtener este array y recorrer los elementos?

 
Nikita Chernyshov #:

Hay una estructura

[

{

"ticket":671073362

},

{

"ticket":111111111

}

]

...

La cadena especificada no coincide con la estructura dada al principio y no es una cadena json válida:

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

Debería serlo:

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

Esta observación es sólo sobre la especificación de la json-a, sin tener en cuenta cómo se implementa en una biblioteca en particular. Yo uso una diferente.

 
Stanislav Korotky #:

La cadena especificada no coincide con la estructura dada al principio y no es una cadena json válida:

Debería serlo:

Esta observación es sólo sobre la especificación de la json-a, sin tener en cuenta cómo se implementa en una biblioteca en particular. Yo uso una diferente.

bueno es cierto, le faltan cuadrados, pero no ayuda con ellos)

[Eliminado]  
demasiados argumentos para la macro de tipo función 'DEBUG_PRINT_KEY' JAson.mqh 391 40
if (type != jtUNDEF) { DEBUG_PRINT_KEY(); return false; }  // si el valor ya tiene tipo, entonces esto es un error

ver declaración de macro 'DEBUG_PRINT_KEY' JAson.mqh

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

Esta advertencia aparece en la última compilación mql5

¿Alguna idea de cómo solucionarlo?

 
Arpit T #:
¿Alguna idea de cómo solucionarlo?

Quitar el paréntesis

if (type != jtUNDEF) { DEBUG_PRINT_KEY; return false; }  // si el valor ya tiene tipo, entonces esto es un error
#ifdef  DEBUG
    #define  DEBUG_PRINT_KEY Print(key+" "+string(__LINE__))
#else
    #define  DEBUG_PRINT_KEY
#endif
[Eliminado]  
Manuel Alejandro Cercos Perez #:

Eliminar el paréntesis

arreglado, gracias

Aquí adjunto el código corregido

Archivos adjuntos:
JAson_1.13.mqh  45 kb