程序库: JSON Serialization and Deserialization (native MQL) - 页 12 1...56789101112131415161718 新评论 Taras Slobodyanik 2018.11.06 20:59 #111 danielsokolowsk:有谁或作者能回答这是否应该支持嵌套 JSON?也就是说,一个 CJAVal 实例包含一个键 "2 "和 "3",它们是另一个 CJAVal 实例。代码似乎可以运行,但在序列化时,键是空白的。 例如,我得到但应该得到https://www.mql5.com/ru/forum/63015 几个示例 string a[] = {"1", "2", "3"}; int b[] = {1, 2, 3}; CJAVal js; js["a"].Add(a[0]); js["a"].Add(a[1]); js["a"].Add(a[2]); js["b"].Add(b[0]); js["b"].Add(b[1]); js["b"].Add(b[2]); js["c"][0]=1.1; js["c"][1]=2.9; js["c"][2]=3.03; string t=js.Serialize(); Print(t); // {"a":["1","2","3"],"b":[1,2,3],"c":[1.10000000,2.90000000,3.03000000]} js.Clear(); js.Deserialize(t); Print(js["c"][2].ToStr()); // 3.03000000 数组的数组 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] ]; } Библиотеки: JSON Serialization and Deserialization (native MQL) 2015.08.18www.mql5.com Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: JSON Serialization and Deserialization (native MQL) Konstantin Efremov 2018.12.30 10:53 #112 很棒的设计,谢谢兄弟!用在我的机器人上,就像发条一样好用。 Andrey Dik 2019.01.03 21:36 #113 Konstantin Efremov: 很棒的设计,谢谢兄弟!工作起来就像发条一样,我把它用在了我的机器人上。附件是修正版,感谢作者,也许他不会介意。 附加的文件: json.mqh 44 kb Erwann Pannerec 2019.02.14 14:34 #114 您好、 我想用这个库来读取 json 文件。 你能提供一个这样的例子吗? 我的第一行是 : string s[]; int cpt=0; int handle=FileOpen("json_sample.txt",FILE_READ|FILE_TXT|FILE_ANSI); while(!FileIsEnding(handle)) {ArrayResize(s,ArraySize(s)+1); s[cpt++]=FileReadString(handle);} FileClose(handle); 为了把 json 文件中的一些值存储到我的变量中,我该怎么做? 感谢您的帮助! Erwann. Erwann Pannerec 2019.02.18 17:21 #115 经过一番研究,我解决了我的问题:) 没有必要使用字符串表[],因为字符串的长度限制是 256 字节。 事实上,字符串的长度没有限制(只有在引号""之间进行初始化时才有限制)。 因此,您只需使用以下代码 CJAVal srce; string s; int cpt=0; int handle=FileOpen("json_sample.txt",FILE_READ|FILE_TXT|FILE_ANSI); while(!FileIsEnding(handle)) StringAdd(s,FileReadString(handle)); FileClose(handle); srce.Deserialize(s); s string 变量的长度可以超过 256 个字符:) 再见、 Erwann. markusb79 2019.02.20 14:43 #116 danielsokolowsk:有谁或作者能回答这是否应该支持嵌套 JSON?也就是说,一个 CJAVal 实例包含一个键 "2 "和 "3",它们是另一个 CJAVal 实例。代码似乎可以运行,但在序列化时,键是空白的。 例如,我得到但应该得到丹尼尔,在使用嵌套的 JSON 对象(而不是数组)时,我也遇到了键为空的问题。我使用 Set()函数 解决了这个问题。示例 CJAVal msg, content; msg["messageName"] = "TickData"; content["instrument"] = Symbol(); content["timeFrame"] = (int) Period(); content["time"] = (int) TimeCurrent(); content["open"] = iOpen(Symbol(), Period(), 0); msg["content"].Set(content); Print("Sending JSON to server: ", msg.Serialize()); Konstantin Efremov 2019.03.06 17:35 #117 Andrey Dik:圣经中存在一些错误。附上更正后的版本,感谢作者,也许您不会介意。谢谢! Gad Benisty 2020.02.24 09:30 #118 如何从 JSON 树中删除 元素。有设置和添加的方法,但没有删除的方法。 预先感谢 [删除] 2020.03.14 02:36 #119 awesome,I have added ulong and datetime type support to it. [删除] 2020.03.14 02:39 #120 Ting Yu: the WebRequest result is a array. and i invoke like this jv.Deserialize( result); how can i iterate it if result likes [{"a":1},{"a":2}] ' you can use jv[0]["a"].ToInt() to get 1,jv[1]["a"].ToInt() to get 2 1...56789101112131415161718 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有谁或作者能回答这是否应该支持嵌套 JSON?也就是说,一个 CJAVal 实例包含一个键 "2 "和 "3",它们是另一个 CJAVal 实例。代码似乎可以运行,但在序列化时,键是空白的。
例如,我得到
但应该得到
https://www.mql5.com/ru/forum/63015
几个示例
数组的数组
很棒的设计,谢谢兄弟!工作起来就像发条一样,我把它用在了我的机器人上。
附件是修正版,感谢作者,也许他不会介意。
您好、
我想用这个库来读取 json 文件。
你能提供一个这样的例子吗?
我的第一行是 :
为了把 json 文件中的一些值存储到我的变量中,我该怎么做?
感谢您的帮助!
Erwann.
经过一番研究,我解决了我的问题:)
没有必要使用字符串表[],因为字符串的长度限制是 256 字节。
事实上,字符串的长度没有限制(只有在引号""之间进行初始化时才有限制)。
因此,您只需使用以下代码
s string 变量的长度可以超过 256 个字符:)
再见、
Erwann.
有谁或作者能回答这是否应该支持嵌套 JSON?也就是说,一个 CJAVal 实例包含一个键 "2 "和 "3",它们是另一个 CJAVal 实例。代码似乎可以运行,但在序列化时,键是空白的。
例如,我得到
但应该得到
丹尼尔,在使用嵌套的 JSON 对象(而不是数组)时,我也遇到了键为空的问题。我使用 Set()函数 解决了这个问题。示例
圣经中存在一些错误。附上更正后的版本,感谢作者,也许您不会介意。
谢谢!
如何从 JSON 树中删除 元素。有设置和添加的方法,但没有删除的方法。
预先感谢
awesome,I have added ulong and datetime type support to it.
the WebRequest result is a array. and i invoke like this
jv.Deserialize( result);
how can i iterate it
'
you can use jv[0]["a"].ToInt() to get 1,jv[1]["a"].ToInt() to get 2