87 lines
2.6 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| 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
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
#include "..\\Src\\JsonNode.mqh"
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
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);
| |||
}
| |||
//+------------------------------------------------------------------+
|