2026-07-23 16:16:14 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| DomSer.mq5 |
|
| | | //| Copyright 2026, Niquel Mendoza |
|
| | | //| https://www.mql5.com |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, Niquel Mendoza"
|
| | | #property link "https://www.mql5.com"
|
| | | #property version "1.00"
|
| | | #property strict
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-09-03 11:13:49 -05:00 | | | #include "..\\Src\\Json.mqh"
|
2026-07-23 16:16:14 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | struct Libro
|
| | | {
|
| | | string name;
|
| | | string titulo;
|
| | | double valor;
|
| | |
|
| | |
|
| | | //---
|
| | | Libro() {}
|
| | | Libro(TSN::CDomNodeBase& obj)
|
| | | {
|
| | | name = obj["name"].ToString();
|
| | | titulo = obj["titulo"].ToString();
|
| | | valor = obj["valor"].ToDouble(0.00);
|
| | | }
|
| | | static void ToTsnDomNode(TSN::CDomNodeBase& obj, const Libro& other)
|
| | | {
|
| | | obj.NewObj(16);
|
| | | obj["name"] = other.name;
|
| | | obj["titulo"] = other.titulo;
|
| | | obj["valor"] = other.valor;
|
| | | }
|
| | | };
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| Script program start function |
|
| | | //+------------------------------------------------------------------+
|
| | | void OnStart()
|
| | | {
|
| | | //---
|
| | | TSN::CDomNodeManager manager;
|
| | | Libro l;
|
| | | l.name = "hola";
|
| | | l.titulo = "titulo";
|
| | | l.valor = 1.0;
|
| | |
|
| | | // Load
|
| | | TSN::CJsonDomSerializer ser;
|
| | | TSN::CDomNodeBase node(&manager);
|
| | | node.Load<Libro>(l);
|
| | | Print(ser.Serialize(&node));
|
| | | Print(CharArrayToString(ser.m_buf, 0, ser.m_buf_s));
|
| | |
|
| | | //---
|
| | | TSN::CJsonBuilder builder;
|
| | | builder.Obj();
|
| | | builder.KeyWV("name").ValSWV("hola");
|
| | | builder.KeyWV("titulo").ValSWV("como");
|
| | | builder.KeyWV("valor").Val(10.0490);
|
| | | builder.EndObj();
|
| | |
|
| | | //---
|
| | | TSN::CJsonParser parser;
|
| | | ArrayCopy(parser.m_raw, builder.m_buf, 0, 0, builder.m_pos);
|
| | | parser.CalcLen();
|
| | | parser.CorrectPadding();
|
| | | parser.Parse();
|
| | |
|
| | | // Dom building
|
| | | TSN::CDomNodeBase node2(&manager); // le pasamos su manager
|
| | | parser.GetRoot().ToDom(&node2, &manager);
|
| | |
|
| | | //---
|
| | | Libro l2 = node2.GetAs<Libro>();
|
| | | Print(l2.name);
|
| | | Print(l2.titulo);
|
| | | Print(l2.valor);
|
| | | }
|
| | | //+------------------------------------------------------------------+
|