程序库: JSON Serialization and Deserialization (native MQL) - 页 10 1...3456789101112131415161718 新评论 --- 2018.02.21 10:16 #91 固定 1.13 附加的文件: JAson.mqh 31 kb Delta.800 2018.02.21 10:19 #92 o_o: 是的,我可能不明白你的问题出在哪里,你所显示的线路让你能够得到一切。{ "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ... }, "btc_eur": { ...交易所给出的答复是....(交易对的数量可能不同...例如,交易所会关闭或增加一些交易对)。 我需要以某种方式获取响应中所有货币对的名称(btc_usd、btc_rur、btc_eur 等),可以通过循环或递归调用,这并不重要....。我不知道如何获取一对货币对的第一个和下一个名称...我不知道如何获取一对货币对的第一个和下一个名称.... Andrey Dik 2018.02.21 11:07 #93 Delta.800:交易所给出的答复是....(交易对的数量可以不同....。例如,如果交易所将关闭或增加某些配对)。我需要以某种方式通过循环或递归调用获取响应中所有货币对的名称(btc_usd、btc_rur、btc_eur 等),这并不重要....。我不知道如何获取一对货币对的第一个和下一个名称...我不知道如何获取一对字符串的首名和次名......我想不通....剪切开头的字符串{ "server_time": 1519120845, "pairs": 然后删除字符串末尾的 } 然后将字符串输入解析器。 用解析器数据 填充结构。然后对你的结构做你想做的事--词对名称等。 Delta.800 2018.02.21 12:11 #94 Andrey Dik:修剪开头的一行 然后删除行尾 }然后将字符串送入解析器。用解析器数据 填充结构。然后对结构做你想做的事--配对名称等。"然后将字符串输入解析器",对吗?- dataM.Deserialize(ttt); "用解析器数据 填充结构"。- 怎么做?请给我一行.....(你不需要描述结构))我指的是简单的结构,而不是面向对象的结构,例如struct bpInfo { public: ulong server_time; bpPairInfo pairs[]; bool FromJson(CJAVal& ja) { server_time=(uint)ja["server_time"].ToInt(); CJAVal* jp=ja["pairs"]; int n=ArrayResize(pairs, ArraySize(jp.m_e)); for (int i=0; i<n; ++i) pairs[i].FromJson(jp.m_e[i]); return true; } }; 我想这里也有类似的东西,但我想不出来。(我还不擅长 OOP......)。 Andrey Dik 2018.02.21 12:17 #95 o_o:固定的1.13试试这个例子 #include "JAson.mqh" //+------------------------------------------------------------------+ void OnStart () { string in, out; CJAVal js (NULL, jtUNDEF); bool b; //--- in = "{\"фирма1\":{\"модельный_ряд1\":[[0.1,1.3],[0.2,1.5],[0.3,2.0]],\"модельный_ряд2\":[[0.1,2.3],[0.2,2.5],[0.3,3.0]]},\"фирма2\":{\"модельный_ряд1\":[[0.2,3.8],[0.3,4.0],[0.4,4.5]],\"модельный_ряд2\":[[0.2,4.8],[0.3,5.0],[0.4,6.5]]}}}"; Print(in); out = ""; b = js.Deserialize (in); js.Serialize (out); Print (out); for (int i = 0; i < ArraySize (js.m_e); i++) { Print("---"); Print(js.m_e[i].m_key); for (int i1 = 0; i1 < ArraySize (js.m_e [i].m_e); i1++) { Print(" : ", js.m_e[i].m_e[i1].m_key); for (int i2 = 0; i2 < ArraySize (js.m_e [i].m_e [i1]. m_e); i2++) { Print(" : ", js.m_e[i].m_e[i1].m_e[i2].m_key, " :", js.m_e[i].m_e[i1].m_e[i2].ToDbl()); } } } } //+------------------------------------------------------------------+ Andrey Dik 2018.02.21 12:19 #96 Delta.800:"然后将字符串输入解析器"。- dataM.Deserialize(ttt); "用解析器数据 填充结构"。- 怎么做?请给我一行.....(你不需要描述结构))。请看我关于公司和型号范围的示例--它展示了如何从解析器获取数据.....。 o_o: 修正1.13 然而.....可以完美地拆解和收集时序,但我无法获取数据....也许没有 dables、ints 等?- 因此,我建议您先以字符串的形式保留字符串,然后再决定如何从外部处理该字符串。 --- 2018.02.21 12:31 #97 Andrey Dik:然而.....Disassembles and assembles(拆卸和组装)这一术语很好,但我无法获取数据....。也许我们不需要 dables、ints 等?- 让字符串以字符串的形式存在,然后再决定如何从外部处理这个字符串。您在数组中使用了一个数组。这意味着您需要增加一个 i3 层的循环。 модельный_ряд1 :[ [ 0.1,1.3], [ 0.2,1.5], [ 0.3,2.0] ] #include <JAson.mqh> //+------------------------------------------------------------------+ void OnStart () { string in, out; CJAVal js (NULL, jtUNDEF); bool b; //--- in = "{\"фирма1\":{\"модельный_ряд1\":[[0.1,1.3],[0.2,1.5],[0.3,2.0]],\"модельный_ряд2\":[[0.1,2.3],[0.2,2.5],[0.3,3.0]]},\"фирма2\":{\"модельный_ряд1\":[[0.2,3.8],[0.3,4.0],[0.4,4.5]],\"модельный_ряд2\":[[0.2,4.8],[0.3,5.0],[0.4,6.5]]}}}"; Print(in); out = ""; b = js.Deserialize (in); js.Serialize (out); Print (out); for (int i = 0; i < ArraySize (js.m_e); i++) { Print("---"); Print(js.m_e[i].m_key); for (int i1 = 0; i1 < ArraySize (js.m_e [i].m_e); i1++) { CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]); Print(" : ", j1.m_key); for (int i2 = 0; i2 < ArraySize (j1. m_e); i2++) { CJAVal* j2=GetPointer(j1.m_e[i2]); for (int i3 = 0; i3 < ArraySize (j2. m_e); i3++) { CJAVal* j3=GetPointer(j2.m_e[i3]); Print(" : ", j3.m_key, " :", j3.ToDbl()); } } } } } Delta.800 2018.02.21 14:13 #98 衷心感谢所有回复者!!!!! { "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ... }, "btc_eur": { ... 我们得到了这些夫妇的名字: CJAVal dataM; ... dataM.Deserialize(ttt); Print(dataM.m_e[0].m_key); Print(dataM.m_e[1].m_key); for (int i1 = 0; i1 < ArraySize (dataM.m_e [1].m_e); i1++) { CJAVal* j1=GetPointer(dataM.m_e[1].m_e[i1]); Print(" :-", j1.m_key); }底线: server_time pairs :-btc_usd :-btc_rur :-btc_eur :-ltc_btc ... 我们所需要的 Andrey Dik 2018.02.21 17:10 #99 o_o:您的数组中包含一个数组,因此您需要添加另一个循环层 i3巫术,82 级。 就不能再简单点吗? --- 2018.02.21 17:42 #100 Andrey Dik:巫术,82 级你就不能再简单点吗? - 什么意思?是你们把阵列弄得这么深的 1...3456789101112131415161718 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
固定
1.13
是的,我可能不明白你的问题出在哪里,你所显示的线路让你能够得到一切。
{ "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ... }, "btc_eur": { ...交易所给出的答复是....(交易对的数量可能不同...例如,交易所会关闭或增加一些交易对)。
我需要以某种方式获取响应中所有货币对的名称(btc_usd、btc_rur、btc_eur 等),可以通过循环或递归调用,这并不重要....。我不知道如何获取一对货币对的第一个和下一个名称...我不知道如何获取一对货币对的第一个和下一个名称....
交易所给出的答复是....(交易对的数量可以不同....。例如,如果交易所将关闭或增加某些配对)。
我需要以某种方式通过循环或递归调用获取响应中所有货币对的名称(btc_usd、btc_rur、btc_eur 等),这并不重要....。我不知道如何获取一对货币对的第一个和下一个名称...我不知道如何获取一对字符串的首名和次名......我想不通....
剪切开头的字符串
{ "server_time": 1519120845, "pairs":然后删除字符串末尾的 }
然后将字符串输入解析器。
用解析器数据 填充结构。然后对你的结构做你想做的事--词对名称等。
修剪开头的一行
然后删除行尾 }
然后将字符串送入解析器。
用解析器数据 填充结构。然后对结构做你想做的事--配对名称等。
"然后将字符串输入解析器",对吗?- dataM.Deserialize(ttt);
"用解析器数据 填充结构"。- 怎么做?请给我一行.....(你不需要描述结构))
我指的是简单的结构,而不是面向对象的结构,例如
我想这里也有类似的东西,但我想不出来。(我还不擅长 OOP......)。固定的
1.13
试试这个例子
"然后将字符串输入解析器"。- dataM.Deserialize(ttt);
"用解析器数据 填充结构"。- 怎么做?请给我一行.....(你不需要描述结构))。
请看我关于公司和型号范围的示例--它展示了如何从解析器获取数据.....。
o_o:
修正
1.13然而.....可以完美地拆解和收集时序,但我无法获取数据....也许没有 dables、ints 等?- 因此,我建议您先以字符串的形式保留字符串,然后再决定如何从外部处理该字符串。
然而.....Disassembles and assembles(拆卸和组装)这一术语很好,但我无法获取数据....。也许我们不需要 dables、ints 等?- 让字符串以字符串的形式存在,然后再决定如何从外部处理这个字符串。
您在数组中使用了一个数组。这意味着您需要增加一个 i3 层的循环。
модельный_ряд1 :[ [ 0.1,1.3], [ 0.2,1.5], [ 0.3,2.0] ]衷心感谢所有回复者!!!!!
{ "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ... }, "btc_eur": { ...我们得到了这些夫妇的名字:
底线:
我们所需要的
您的数组中包含一个数组,因此您需要添加另一个循环层 i3
巫术,82 级。
就不能再简单点吗?
巫术,82 级
你就不能再简单点吗? - 什么意思?
是你们把阵列弄得这么深的