程序库: JSON Serialization and Deserialization (native MQL) - 页 3

 

原来,它只是一个对象数组。

数组 "的一般外观:[ {..}, {..}, ]

我的意思是,用大括号把这个列表包起来。

"List": [ {"symbol": "USDJPY", "type": "Buy" },  { "symbol": "EURUSD", "type": "Sell" } ]
 

我用方括号进行了限制。但只读取了第一个对象:

[ {
     "symbol": "USDJPY",
     "type": "Buy",
     "lot": 0.5,
     "price_open": 102.36,
     "price_close": 102.44,
     "stop_loss": 99.25,
     "take_profit": 103.25 
    },
    {

如何读入数组?

 

您是否向解析器提供了有效的 json?

您的数据一切正常

  string in="{ \"array\": [ { \"symbol\": \"USDJPY\", \"type\": \"Buy\", \"lot\": 0.5, \"price_open\": 102.36, \"price_close\": 102.44, \"stop_loss\": 99.25, \"take_profit\": 103.25 }, { \"symbol\": \"EURUSD\", \"type\": \"Sell\", \"lot\": 0.2, \"price_open\": 1.1044, \"price_close\": 1.1252, \"stop_loss\": 1.1434, \"take_profit\": 1.0922 } ] }";
  CJAVal js(NULL,jtUNDEF);
  js.Deserialize(in);
  string out="";
  js.Serialize(out);
  Print(out);
 
阿列克谢,非常感谢!我忘了用大括号把它包起来.....
 

一个 "傻瓜 "提出的问题。

如何在不使用键查找方法的情况下获取键值?

virtual CJAVal *CJAVal::FindKey(string akey) 
 
Dennis Kirichenko:

一个 "傻瓜 "提出的问题。

如何在不使用 findkey 方法的情况下获取键值?

只有知道键的完整路径,但 findkey 会被隐式使用。

double d=jo["order"]["profit"];

double d=ja["array"].m_e[0]["profit"];

---

否则,直接访问 m_e 数组,并知道确切的索引。

 

您好。我在哪里可以读到你们库的所有功能?前几天,我必须解决与一个互联网资源交互的问题,该资源的响应是以 JSON 格式返回的。贵公司的库帮我节省了时间,不用再处理 JSON 解析问题,对此我非常感谢!但我想更深入地了解该库的功能。我没有找到任何关于库函数的说明。

还有一个问题:在服务响应的一个字段中有一小段西里尔文的描述,但是 JSON 服务对这段文字的编码如下:"description": "\u041d\u043e\u0432\u043e\u0435\u0432\u0435\u0440\u0441\u0438\u0438 v.2\r\n1.\u0418\u0437\u043c\u0435\u043d\u0435\u043d \u0434\u0438\u0437\u0430\u0439\u043d \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438\r\n2.\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043d\u0438\u043f\u0430\u043d\u0435\u043b\u044c\r\n3.\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430\r\n4.\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\r\n\r\n"

有可能在你们书库的帮助下将这段文字翻译成所需的格式吗?

Thank you in advance!

 

libe 只有两个主要功能

序列化和反序列化。

其他都是重载操作符、设置和读取数组

---

这个转义文本可以转换。

我将在下一个版本中为 Unescape 函数添加解析功能。

 

更新至 1.05

您示例中的文本将转换为

{"description": "New in version v.2\r\n1.Redesigned trading panel\r\n2.Added mini panel\r\n3.Added balance display for selected trading account\r\n4.Fixed some bugs"}

---

管理员正在更新代码库,您可以下载附件中的代码库。

附加的文件:
jason.mqh  30 kb
 
o_O:

更新至 1.05

您示例中的文本将转换为

{"description": "New in version v.2\r\n1.Redesigned trading panel\r\n2.Added mini panel\r\n3.Added balance display for selected trading account\r\n4.Fixed some bugs"}

---

管理员正在更新代码库,您可以下载附件中的代码库。

非常感谢!现在我可以从猫头鹰解码器中移除我已经写好的内容了。让一切都在一个库中!回复很快!非常感谢!