Bibliotecas: JSON Serialization and Deserialization (native MQL) - página 11
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Qué quieres decir? Tú mismo hiciste esas profundidades de matriz.
¿Las hice yo? - No, mi imaginación no llega tan lejos, pero este es un ejemplo concreto de la vida, por así decirlo.
Quise decir - ¿no podemos prescindir de punteros y construcciones sesudas? Me gustaría mantenerlo simple (modestamente guardaré silencio sobre el código de la biblioteca en sí).
¿Ah, sí? - No, mi imaginación no llega tan lejos, pero este es un ejemplo concreto de la vida, por así decirlo.
Me refería a si no puedes prescindir de punteros y construcciones sesudas.
¿Dónde quieres prescindir de punteros? ¿Qué quieres exactamente? ¿Un trozo de json en el registro? ¿Un botón de "quiero dinero"?
¿Qué necesitas exactamente? ¿Un trozo de json en el registro? ¿Un botón de "quiero dinero"?
de eso se trata
CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]);¿cómo puedes adivinar sin conocer el código de la librería qué es y por qué se debe hacer para conseguir lo que quieres? deberían existir funciones como ToDbl() para acceder a los datos de forma sencilla.
Como veo, no soy el único que está tan "despistado".
ss. p.ej. m_e - ¿qué es esta cosita? ¿no podría llamarse, por ejemplo, group? o m_key? - Pues no es más que groupName ¿Es mucho más letras? - No, pero mucho más claro.
Conclusión: la librería es muy potente y hace maravillas, pero está escrita en "lenguaje seco" y es mejor no mirar el código para pusilánimes, mujeres lactantes y niños....
de eso se trata:
¿cómo puede uno adivinar sin conocer el código de la biblioteca qué es y por qué debe hacerse para conseguir lo que quiere? debería haber funciones como ToDbl() para el acceso simple a los datos.
Como veo, no soy el único que está tan "despistado".
ss. p.ej. m_e - ¿qué es esta cosita? ¿no podría llamarse, por ejemplo, group? o m_key? - Pues no es más que groupName! ¿Es mucho más letras? - No, pero es mucho más claro.
En resumen: la librería es muy potente y hace maravillas, pero está escrita en "lenguaje seco" y es mejor no mirar el código para pusilánimes, mujeres lactantes y niños....
¿Quizás deberías probar con otra librería?
Yo la usaba antes, pero no compilaba en MQL5 (versión antigua).... necesitas adaptarla... o probar una nueva versión...
http://www.lordy.co.nf/mql4/
había en algún lugar en el foro al respecto ...
---------------------
aquí está...
https://www.mql5.com/en/code/11134
de eso se trata:
¿cómo puede uno adivinar, sin conocer el código de la biblioteca, qué es y por qué debe hacerse para conseguir lo que quiere? debería haber funciones como ToDbl() para el acceso simple a los datos.
Como veo, no soy el único que está tan "despistado".
ss. p.ej. m_e - ¿qué es esta cosita? ¿no podría llamarse, por ejemplo, group? o m_key? - Pues no es más que groupName! ¿Es mucho más letras? - No, pero es mucho más claro.
En resumen: la biblioteca es muy potente y hace maravillas, pero está escrita en "lenguaje seco" y es mejor no mirar el código para los pusilánimes, las mujeres lactantes y los niños....
Entonces, ¿quién te obligó a entrar en el array m_e?
No sé qué quieres del código. Y no sé qué tipo de tarea estás desarrollando.
---
En primer lugar, json es un formato de transferencia de datos, de estructura. Si no entiendes la estructura de los datos recibidos, no es problema de mis clases, es tuyo. Ir a la documentación de su fuente de datos y buscar la comprensión allí.
En segundo lugar - la clase implementa las funciones básicas de trabajar con el formato - serialización, almacenamiento de la estructura y manejo conveniente
Si quisieras obtener datos de un cierto array, escribirías código conveniente.
y no esa larga mierda en forma de bucles para recuperar toda la estructura. No sé de qué iba todo eso.
tal vez deberías probar con otra biblioteca.
Yo solia usarla antes, pero no compilaba en MQL5 para mi (version vieja)... necesitas adaptarla... o probar una nueva versión...
http://www.lordy.co.nf/mql4/
había en alguna parte en el foro al respecto....
---------------------
aquí está...
https://www.mql5.com/en/code/11134
Gracias, pero confío plenamente en el código de Sergeyev.
He sido tonto con los punteros, claro, pido disculpas. Difícil de leer - fii, qué problema...
o_o:
y no esa larga mierda en forma de bucles a través de toda la estructura. No sé de qué iba todo eso.
por nombre de grupo los datos pueden no existir, o el grupo no está completo, o el nombre del grupo no está en los datos, o alguna otra cosa... ¿cómo entonces?
Así es más fácil y claro y siempre puedes comprobar el tamaño de los arrays para no tener problemas de llenado de las estructuras:
js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());
en tales variantes no está claro qué hacer con un elemento inexistente
así
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
de esta forma
js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());
si js["empresa1"] o js.group [contadorEmpresas] no aparece, ¿qué mostrar? y ¿si mostrar algo?
en este punto se accederá al elemento null y se producirá un error....
en tales variantes no está claro qué hacer con un elemento inexistente
así
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
de esta forma
js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());
si js["empresa1"] o js.group [contadorEmpresas] no aparece, ¿qué mostrar? y ¿si mostrar algo?
en este punto será una referencia a elemento nulo y un error...
En una tienda hay estanterías, para cada género y autor hay una estantería y estantes diferentes (estructura/s con las que trabaja el programa). Y hay libros (datos) que pueden llegar o no a la tienda.....
¿Y cada vez que hay que rediseñar las estanterías para una nueva llegada de libros? Por supuesto que no.
Para abordar de esta manera:
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
necesita saber el nombre del grupo, y si el grupo en los datos de entrada está ahí, pero el nombre no está allí? Y si ..... pueden pasar muchas cosas...
Es más fácil simplemente comprobar el tamaño de los grupos de los datos y su número, eso es todo, si al menos un tamaño no coincide con nuestras estructuras, entonces los datos están rotos y no tiene sentido juguetear con ellos y averiguar qué es exactamente lo que está roto en ellos, simplemente ignorar el paquete de estos datos y eso es todo. No hay problemas con el acceso a celdas de array inexistentes (o vacías) y no hay incertidumbre sobre la corrección de los datos llegados. Y el programa nunca se bloqueará por alguna razón.
¿Podría alguien o el autor responder si se supone que esto soporta JSON anidado? Es decir, una instancia CJAVal contiene las claves '2', y '3' que son otra instancia CJAVal. El código parece funcionar pero cuando se serializa las claves están en blanco.
Ejemplo, estoy recibiendo:
{"":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}Pero debería obtener
{"2":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"3":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}