网站建设的策划,美食网站建设规划书需求分析,开发公司如何加强财务管理,创意设计绘画文章目录 一、MQL语言实现JSON协议的意义二、定义JSON数据枚举类型简单数据类型复杂数据类型枚举数据类型定义类变量清理与赋值方法构造与析构方法重载运算符添加与设置方法序列化与反序列方法 一、MQL语言实现JSON协议的意义 数据交互#xff1a;JSON是一种轻量级的数据交换格… 文章目录 一、MQL语言实现JSON协议的意义二、定义JSON数据枚举类型简单数据类型复杂数据类型枚举数据类型定义类变量清理与赋值方法构造与析构方法重载运算符添加与设置方法序列化与反序列方法 一、MQL语言实现JSON协议的意义 数据交互JSON是一种轻量级的数据交换格式广泛应用于Web开发和API接口。通过在MQL语言中实现JSON协议可以方便地与其他系统进行数据交互例如获取外部数据源的实时行情信息或将交易结果以JSON格式返回给其他系统。 数据解析许多外部数据源或API接口返回的数据都是以JSON格式进行传输。通过在MQL语言中实现JSON协议可以方便地解析和处理这些数据提取所需的信息并进行相应的处理。 数据存储将数据以JSON格式进行存储可以更加灵活和可扩展。通过在MQL语言中实现JSON协议可以将交易记录、策略参数等数据以JSON格式进行存储方便后续的读取和处理。 总之通过在MQL语言中实现JSON协议可以实现与其他系统的数据交互、方便地解析外部数据和灵活存储数据等功能提高策略开发和交易执行的灵活性和效率。 二、定义JSON数据枚举类型
简单数据类型
字符串string由双引号括起来的Unicode字符序列。数字number整数或浮点数。布尔值booleantrue或false。空null表示空值。
复杂数据类型
数组Array由方括号括起来的有序值的集合。对象Object由花括号括起来的无序键值对的集合。
枚举数据类型
//------------------------------------------------------------------
//| 枚举 JSON 类型 |
//------------------------------------------------------------------
enum ENUM_JSON_TYPE
{JSON_TYPE_UNDEF, // 未定义类型JSON_TYPE_NULL, // 空值类型JSON_TYPE_BOOL, // 布尔类型JSON_TYPE_INT, // 整型类型JSON_TYPE_DBL, // 浮点类型JSON_TYPE_STR, // 字符串类型JSON_TYPE_ARRAY, // 数组类型JSON_TYPE_OBJ // 对象类型
};
定义类变量
//------------------------------------------------------------------
//| 类 CJAVal |
//------------------------------------------------------------------
class CJAVal
{public:CJAVal m_children[]; // 子节点数组string m_key; // 键名string l_key; // 保存反序列化键CJAVal *m_parent; // 父节点// 类型及对应的值ENUM_JSON_TYPE m_type; // 类型bool bool_v; // 布尔值long int_v; // 整型值double dbl_v; // 浮点值int dbl_precision; // 浮点值精度string str_v; // 字符串值static int code_page; // 代码页
};清理与赋值方法 // 清理virtual void Clear(ENUM_JSON_TYPE jtJSON_TYPE_UNDEF, bool save_keyfalse);// 复制virtual void CopyArr(const CJAVal a);virtual void CopyData(const CJAVal a);virtual bool Copy(const CJAVal a);
构造与析构方法 // 构造函数CJAVal();CJAVal(CJAVal *parent, ENUM_JSON_TYPE type);CJAVal(ENUM_JSON_TYPE t, string str);CJAVal(const int v);CJAVal(const long v);CJAVal(const double v, int precision-100);CJAVal(const bool v);CJAVal(const CJAVal a);// 析构函数~CJAVal();
重载运算符 // 数组下标读取virtual CJAVal *operator[](string key);virtual CJAVal *operator[](int i);// 重载 运算符void operator(const CJAVal a);void operator(const int v);void operator(const long v);void operator(const double v);void operator(const bool v);void operator(string v);// 重载 运算符bool operator(const int v) {return int_v v; }bool operator(const long v) { return int_v v; }bool operator(const double v) { return dbl_v v; }bool operator(const bool v) { return bool_v v; }bool operator(string v) { return str_v v; }// 重载 ! 运算符bool operator!(const int v) { return int_v ! v; }bool operator!(const long v) { return int_v ! v; }bool operator!(const double v) { return dbl_v ! v; }bool operator!(const bool v) { return bool_v ! v; }bool operator!(string v) { return str_v ! v; }
添加与设置方法 // 设置方法virtual void Set(const CJAVal a);virtual void Set(const CJAVal list[]);// 添加方法virtual CJAVal *AddBase(const CJAVal item);virtual CJAVal *Add(const CJAVal item);virtual CJAVal *Add(const int v);virtual CJAVal *Add(const long v);virtual CJAVal *Add(const double v, int precision-2);virtual CJAVal *Add(const bool v);virtual CJAVal *Add(string v);
序列化与反序列方法 // 序列化和反序列化virtual void Serialize(string json, bool is_keyfalse, bool use_commafalse);virtual string Serialize();virtual bool Deserialize(char json[], int len, int i);virtual bool ExtrStr(char json[], int len, int i);virtual bool Deserialize(string json, int acpCP_ACP);virtual bool Deserialize(char json[], int acpCP_ACP);