文章 "JSON 从入门到精通: 创建自己的 MQL5 版本 JSON 解读器"

 

新文章 JSON 从入门到精通: 创建自己的 MQL5 版本 JSON 解读器已发布:

体验分步指南,创建自定义的 MQL5 版本 JSON 解析器,囊括对象和数组处理、错误检查、及序列化。通过这款灵活的解决方案,在 MetaTrader 5 中处理 JSON,获取桥接交易逻辑与结构化数据的实用见解。

本文旨在演示如何创建自己的 MQL5 版本 JSON 解读器,来填补这一空白。沿此道路,我们将探讨解析 JSON 的基本概念,脚步遍及创建拥有处理不同 JSON 元素类型(如对象、数组、字符串、数字、布尔、和空值)能力的灵活类结构。我们的最终目标赋予您舒适地解析 JSON 字符串,并访问或修改其中的数据,所有这些都来自您的 MetaTrader 5 环境的便利。

我们将遵循曾看过的其它 MQL5 相关文章的类似结构,但特别专注 JSON 的解析和用法。这篇文章将分为五个主要章节:概述(您正在阅读的部分)、深入探讨 JSON 基础及其在 MQL5 中如何适配、从零开始构建一款基础 JSON 解析器的分步指南、JSON 处理的高级功能探索,最后是综合的代码清单、加上结论感想。


作者:Sahil Bagdi

 
哦,还有一个。
,等我拿到手,我会做一个比较基准。
 

我比较了 4 个库的速度,包括 MQL5Book 的 ToyJson3。作为 json 样本,我使用了 Binance 对 "exchangeInfo "的响应,大小为 768 Kb。当库从字符串中读取时,会对其进行整体解析,然后我选择一个符号并读取其所有数据。如此循环 100 次。

MetaTrader 5 x64 build 5370 started for MetaQuotes Ltd.
Windows 10 build 19045, 4 x AMD Ryzen 3 PRO 3200 GE w/ Radeon Vega, AVX2, 6 / 13 Gb memory, 241 / 427 Gb disk, UAC, GMT+3
cpu='AVX2 + FMA3'

结果(查询处理时间):

99.5 毫秒 - JAson 1.12(https://www.mql5.com/zh/code/13663)

85.5 毫秒 - JAson 1.13

46.9 毫秒 - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)

41 ms - JSON(https://www.mql5.com/zh/code/53107)

1132 毫秒 - JsonNode(该库)

38 ms - 我基于 JSON 的实现

PS: 很久以前,这里似乎出现过另一个非常精简的库。但我已经记不清了。

PPS:我没有发布用于测量的脚本。代码的形式完全不雅观。

 
Edgar Akhmadeev #:

我比较了 4 个库的速度,包括 MQL5Book 的 ToyJson3。作为 json 样本,我使用了 Binance 对 "exchangeInfo "的响应,大小为 768 Kb。当库从字符串中读取时,会对其进行整体解析,然后我选择一个符号并读取其所有数据。如此循环 100 次。

结果(查询处理时间):

99.5 ms - JAson 1.12(https://www.mql5.com/zh/code/13663)

85.5 ms - JAson 1.13

46.9 ms - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)

41 ms - JSON(https://www.mql5.com/zh/code/53107)

1132 毫秒 - JsonNode(本库)

38 ms - 我基于 JSON 的实现

PS: 很久以前,这里似乎出现过另一个非常精简的库。但我已经记不清了。

PPS:我没有发布用于测量的脚本。代码的形式完全不雅观。

能否请您公布一下 json 字符串或文件?
 
Alain Verleyen #:
请公布 json 字符串或文件。

https://fapi.binance.com/fapi/v1/exchangeInfo

https://eapi.binance.com/eapi/v1/exchangeInfo

778 KB(796 729 字节)。

 
Alain Verleyen #:
能否请您提供 json 字符串或文件?
下面是通过 API 程式化获取的字符串副本。
附加的文件: