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);
| |
}
| |
//+------------------------------------------------------------------+
|