程序库: JSON Serialization and Deserialization (native MQL) - 页 7 1234567891011121314...18 新评论 --- 2017.11.06 15:55 #61 JAval j1; j1.Add(1); JAval j2; j2.Add(2); j2.Add(3); JAval js; js["a"].Add(j1); js["a"].Add(j2); // 在排气管上 - { a:[ [1], [2,3] ]; } Алексей Барбашин 2017.11.06 16:15 #62 o_o: 看起来很清楚,但我有些地方不明白......例如,一个简单的实际任务:我们复制图表并创建一个数组,每个数组中有 3 个图表,字段为 "symbol "和"period"。也就是说,我们应该得到如下结果:{ "keyboard":[ [{"符号":美元兑日元,"周期":5},{"符号":澳元兑美元 ,"周期":5},{"符号":欧元 兑美元,"周期":5 }],[{"符号":英镑兑美元,"周期":5},{"符号":新西兰元兑美元,"周期":5},{"符号":欧元兑日元,"周期":5} ] } ] }嵌套数组中元素的数量可通过变量配置。 --- 2017.11.06 16:35 #63 JAval ja, je, js; je["symbol"]="USDJPY"; je["period"]=5; ja.Add(je); je["symbol"]="AUDUSD"; je["period"]=5; ja.Add(je); je["symbol"]="EURUSD"; je["period"]=5; ja.Add(je); js["keyboard"].Add(ja); ja.Clear(); je["symbol"]="GBPUSD"; je["period"]=5; ja.Add(je); je["symbol"]="NZDUSD"; je["period"]=5; ja.Add(je); je["symbol"]="EURJPY"; je["period"]=5; ja.Add(je); js["keyboard"].Add(ja); 你是真的不清楚还是懒得自己编码?) Алексей Барбашин 2017.11.06 17:23 #64 o_o:你是真的不清楚还是懒得自己编码?)不,阿列克谢,我不是懒得编码。问题的关键不在于此:你的所有示例都有固定数量的数组项。这是我的代码,不幸的是它不起作用。我不知道错误出在哪里。((( CJAVal j_keyboard; // 主数组 CJAVal j_array; // 嵌套数组 CJAVal j_item; // 数组元素 //-- 确定传输元素的数量 int count = ArraySize(array_value); if(count == 0) return(j_keyboard.Serialize()); // 没有元素 int col = 0; for(int item = 0; item<count; item++) { //-- 填充最简单的元素 j_item["text"] = array_value[item]; if(col<columns) // 如果数字小于指定列,则添加到数组中 { j_array.Add(j_item); } else { // 达到指定列数后,将其添加到主数组中 j_keyboard["keyboard"].Add(j_array); col = 0; j_array.Clear(); // 清除嵌套数组 } } Print(j_keyboard.Serialize());array_value - Это строчный массив переданных элементов --- 2017.11.06 19:13 #65 Алексей Барбашин: 这是我的代码,可惜不起作用。你是怎么发现它不起作用的? Алексей Барбашин 2017.11.06 19:16 #66 o_o:你是如何发现它不起作用的?序列化字符串输出的是一个空对象。我将制作一个脚本并上传到这里。....过了一会儿...阿列克谢,对不起,我搞砸了...我没有添加迭代器增量...(((一切正常这就是和聪明人聊天的意义!)))再次感谢你们的开发,我已经用了快一年了! 附加的文件: TestArrayJson.mq4 6 kb --- 2017.11.06 19:20 #67 Алексей Барбашин: 序列化字符串输出的是一个空对象。我将编写一个脚本并发布在这里。对我来说是有效的。#include <JAson.mqh> //------------------------------------------------------------------ OnStart void OnStart() { string array_value[]={"000", "111", "012", "AAA", "BBB", "ABC"}; Print(Get(array_value, 3)); } //------------------------------------------------------------------ Get string Get(string& array_value[], int columns) { CJAVal jk; // 主数组 int n=ArraySize(array_value); if (n==0) return jk.Serialize(); // 没有元素 CJAVal ja; // 嵌套数组 for(int i=0, c=0; i<n; i++, c++) { if (c>=columns) { jk["keyboard"].Add(ja); c=0; ja.Clear(); } CJAVal ji; ji["text"]=array_value[i]; ja.Add(ji); // 添加 } if (ArraySize(ja.m_e)>0) jk["keyboard"].Add(ja); return jk.Serialize(); } {"keyboard":[[{"text":"000"},{"text":"111"},{"text":"012"}],[{"text":"AAA"},{"text":"BBB"},{"text":"ABC"}]]} 你的代码有什么问题? Алексей Барбашин 2017.11.06 19:42 #68 o_o:我可以用。你的代码有什么问题?上面已经回答过了,我找到了我的错误。谢谢!))) --- 2017.11.06 19:54 #69 Алексей Барбашин: 很有效。这就是和聪明人聊天的意义!)))一切都有一个调试程序。)再次感谢你们的开发,我已经用了快一年了!不客气 Ting Yu 2017.11.16 03:09 #70 the WebRequest result is a array. and i invoke like this jv.Deserialize( result); how can i iterate it 1234567891011121314...18 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
看起来很清楚,但我有些地方不明白......例如,一个简单的实际任务:我们复制图表并创建一个数组,每个数组中有 3 个图表,字段为 "symbol "和"period"。
也就是说,我们应该得到如下结果:{ "keyboard":[ [{"符号":美元兑日元,"周期":5},{"符号":澳元兑美元 ,"周期":5},{"符号":欧元 兑美元,"周期":5 }],[{"符号":英镑兑美元,"周期":5},{"符号":新西兰元兑美元,"周期":5},{"符号":欧元兑日元,"周期":5} ] } ] }
嵌套数组中元素的数量可通过变量配置。
你是真的不清楚还是懒得自己编码?)
你是真的不清楚还是懒得自己编码?)
不,阿列克谢,我不是懒得编码。问题的关键不在于此:你的所有示例都有固定数量的数组项。这是我的代码,不幸的是它不起作用。我不知道错误出在哪里。(((
这是我的代码,可惜不起作用。
你是怎么发现它不起作用的?
你是如何发现它不起作用的?
序列化字符串输出的是一个空对象。我将制作一个脚本并上传到这里。
....过了一会儿...
阿列克谢,对不起,我搞砸了...我没有添加迭代器增量...(((
一切正常这就是和聪明人聊天的意义!)))再次感谢你们的开发,我已经用了快一年了!
序列化字符串输出的是一个空对象。我将编写一个脚本并发布在这里。
对我来说是有效的。
你的代码有什么问题?
我可以用。
你的代码有什么问题?
上面已经回答过了,我找到了我的错误。谢谢!)))
Алексей Барбашин:
很有效。这就是和聪明人聊天的意义!)))
一切都有一个调试程序。)
再次感谢你们的开发,我已经用了快一年了!
不客气
the WebRequest result is a array. and i invoke like this
jv.Deserialize( result);
how can i iterate it