How?
Easy:
JSON-format is a "string
-ified" representation of data-elements, put into a common container, be it a uchar[]
or a string
on the MQL4 side.
So, let's create a JSON-parser, coherent with the subset of the standard JSON-format syntax rules.
1) Search for all db-output "row"-s ( encapsulated in {...}
)
2) Decode all db-output "column"-s ( encoded in ( known ) "KEY":VALUE
pairs )
3) Store decoded values into any kind of target representation,
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"
or
#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"
or
struct aDB_RECORD{
int aDB_oID;
int aDB_oTYPE;
string aDB_oCCY;
string aDB_oDATE;
};
aDB_RECORD anArrayOfSTRUCTs[];
int anArrayStackPTR = 0
...
anArrayOfSTRUCTs[anArrayStackPTR].aDB_oID = aDecodedOrderID; // 123556
anArrayOfSTRUCTs[anArrayStackPTR].aDB_oTYPE = aDecodedOrderTYPE; // 0
anArrayOfSTRUCTs[anArrayStackPTR].aDB_oCCY = aDecodedOrderCCY; // "EURUSD"
anArrayOfSTRUCTs[anArrayStackPTR].aDB_oDATE = aDecodedOrderDATE; // "2016-12-03 03:00:00"
Yes,
it is that easy!