//+------------------------------------------------------------------+ //| 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(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(); Print(l2.name); Print(l2.titulo); Print(l2.valor); } //+------------------------------------------------------------------+