使用MQL4脚本

时间:2016-12-28 11:10:51

标签: json mql4

我需要从JSON数组中获取数据 我使用 WebRequest() 函数调用从我的数据库获取订单列表,通过nodejs(api),然后我获得了以下JSON数据格式,例如:

[{"orderid":       123556,
  "ordertype":     0,
  "ordercurrency": "EURUSD",
  "orderdt":       "2016-12-03 03:00:00"
  },
 {"orderid":       123457,
  "ordertype":     0,
  "ordercurrency": "GBPUSD",
  "orderdt":       "2016-12-03 03:15:00"
  }
 ]

知道如何将其转换为普通数组以管理数据吗?

谢谢。

/ Koul

3 个答案:

答案 0 :(得分:3)

JSON序列化和反序列化库工作得很好。 您可以在一分钟内包含它并完成任务,或从代码中获取灵感。

https://www.mql5.com/en/code/13663

https://www.mql5.com/en/forum/65320

假设您将JSON数据粘贴到名为data的字符串变量中。

#include <JAson.mqh>

// Object
CJAVal json;

// Load in and deserialize the data
json.Deserialize(data);

// Try to access the data elements
Alert(json["orderid"].ToInt());
Alert(json["ordercurrency"].ToStr());

答案 1 :(得分:1)

如何
简单:

JSON格式是一个“ string - ified ”数据元素的表示形式,放入一个公共容器中,无论是 { MQL4方面的{1}} uchar[]

因此,让我们创建一个JSON解析器,与标准JSON格式语法规则的子集保持一致。

1)搜索所有db-output“” - s(封装在 string

2)解码所有db-output“” - s(以编码(已知) {...} 对)

3)将解码后的值存储到任何类型的目标表示中,

"KEY":VALUE

int    orderIdNoARRAY[];
int    orderTypeARRAY[];
string orderCurrARRAY[];
string orderDateARRAY[];
int    anArrayStackPTR = 0
...
orderIdNoARRAY[anArrayStackPTR] = aDecodedOrderID;    // 123556
orderTypeARRAY[anArrayStackPTR] = aDecodedOrderTYPE;  // 0
orderCurrARRAY[anArrayStackPTR] = aDecodedOrderCURR;  // "EURUSD"
orderDateARRAY[anArrayStackPTR] = aDecodedOrderDATE;  // "2016-12-03 03:00:00"

#define oID   0
#define oTYPE 1
#define oCCY  2
#define oDATE 3

string stringDataFromJSON[10000,4];
int    anArrayStackPTR = 0
...
stringDataFromJSON[anArrayStackPTR,oID]   = (string)aDecodedOrderID;      // 123556
stringDataFromJSON[anArrayStackPTR,oTYPE] = (string)aDecodedOrderTYPE;    // 0
stringDataFromJSON[anArrayStackPTR,oCCY]  = (string)aDecodedOrderCURR;    // "EURUSD"
stringDataFromJSON[anArrayStackPTR,oDATE] = (string)aDecodedOrderDATE;    // "2016-12-03 03:00:00"

是的,这很容易!

答案 2 :(得分:0)

是的,JAson - JSON 序列化和反序列化库作品是很好的流行库: https://www.mql5.com/en/code/13663
https://www.mql5.com/en/forum/65320

我编写了包含更多细节的文档(不同于 https://www.mql5.com/en/code/13663)并添加了单元测试:
https://github.com/vivazzi/JAson

它可能对你有用。