87 lines
2.6 KiB
MQL5
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\\Json.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);
|
|
}
|
|
//+------------------------------------------------------------------+
|