赞
踩
数据交互:JSON是一种轻量级的数据交换格式,广泛应用于Web开发和API接口。通过在MQL语言中实现JSON协议,可以方便地与其他系统进行数据交互,例如获取外部数据源的实时行情信息或将交易结果以JSON格式返回给其他系统。
数据解析:许多外部数据源或API接口返回的数据都是以JSON格式进行传输。通过在MQL语言中实现JSON协议,可以方便地解析和处理这些数据,提取所需的信息并进行相应的处理。
数据存储:将数据以JSON格式进行存储可以更加灵活和可扩展。通过在MQL语言中实现JSON协议,可以将交易记录、策略参数等数据以JSON格式进行存储,方便后续的读取和处理。
总之,通过在MQL语言中实现JSON协议,可以实现与其他系统的数据交互、方便地解析外部数据和灵活存储数据等功能,提高策略开发和交易执行的灵活性和效率。
//+------------------------------------------------------------------+
//| 枚举 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 jt=JSON_TYPE_UNDEF, bool save_key=false);
// 复制
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_key=false, bool use_comma=false);
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 acp=CP_ACP);
virtual bool Deserialize(char &json[], int acp=CP_ACP);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。