我需要从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
答案 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。
它可能对你有用。