- www.mql5.com
因为代码库就是这样建立的(至少现在是这样)--默认情况下,代码只能在一种语言版本中注册(你也可以在英语分支中注册),只有在某些条件下才能转移到其他语言中(应该指定--通过受欢迎程度、版主命令或其他方式自动注册)。
至于 json 主题本身,algobook 中也有一个 toyjson.mqh 的简约 实现。
- www.mql5.com
1.大小,20 千字节与 30 千字节
2.允许灵活使用任何 JSON 结构
- 有定义值类型的方法,可以处理值可以是不同类型的情况
- 有获取对象键的方法,可以处理事先不知道键的情况
- 方便的库接口,使填充 JSON 结构变得方便易懂。
3.源代码清晰易读
- 可以轻松理解库的工作,使其工作原理透明化
- 清晰的库结构可以方便地调试网络请求和响应
- 不使用运算符重载,提供了名称清晰的方法,使任何开发人员都能理解代码。
在这里,我甚至决定看看什么是 "可理解的、人类可读的源代码":-)
划掉第 3 点--你和 jAson 的作者一样,连注释和文档都懒得写。对于用户来说,使用操作符更方便、更清晰,因此避免使用操作符与其说是优点,不如说是缺点。
使用 JAson 已经有很长一段时间了。现在我决定比较一下 3 个库的速度,包括书中的 ToyJson3。作为 json 样本,我使用了 Binance 对 "exchangeInfo "的响应,大小为 768 Kb。当库从字符串中读取时,它会被完整解析,然后我选择一个字符并读取其所有数据。结果:
JAson - 122 ms
ToyJson3 - 54 ms
json - 48 ms
此外,json 不仅可以反序列化,还可以序列化,Binance 期货 API 也需要它。我不知道其他库中是否有这个功能,因为很难解析其他人的代码。
但我不擅长 OOP,也完全不理解这种结构:
JSON::Object* json1 = new JSON::Object() .setProperty("number", 123456) .setProperty("string", "text") .setProperty("boolean", true) .setProperty("object", new JSON::Object() .setProperty("number", 123456) .setProperty("string", "text") .setProperty("boolean", true) .setProperty("array", new JSON::Array()) ) .setProperty("array", new JSON::Array() .add(true) // 布尔型 .add(123456) // 数量 .add("string") // 字符串 .add(new JSON::Object() .setProperty("number", 123456) .setProperty("string", "text") ) .add(new JSON::Array() .add(true) .add(123456) .add("string") ) ); string exampleText = json1.toString();



JSON:
JSON 格式的序列化和反序列化
Author: Kuzma Shevelev