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

 
o_o:

你是什么意思?

我做的?- 不,我的想象力没那么丰富,但这可以说是生活中的一个具体例子。

我的意思是--我们能不能不要指针和脑洞大开的构造? 我希望简单一些(我会谦虚地对库函数代码本身保持沉默)。

 
Andrey Dik:

我有吗?- 不,我的想象力没有那么丰富,但这可以说是生活中的一个具体例子。

我是说没有指针和脑洞大开的构造不行吗?

你到底想要什么? 日志中的 json 数据还是 "要钱 "按钮?

 
o_o:

你到底需要什么? 日志中的 json 数据?"要钱 "按钮?

这就是问题所在:

CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]);

在不了解库代码的情况下,你怎么能猜到它是什么,以及为什么要这样做才能得到你想要的?

看来,我不是唯一一个这么 "无知 "的人。

例如,m_e--这个小东西是什么? 不能叫groupm_key 吗?- 这不就是groupName 吗!字母多得多吗?- 没有,但更清晰了。

一句话:这个库非常强大,能创造奇迹,但它是用 "枯燥的语言 "写成的,胆小鬼、哺乳期妇女和儿童最好不要看代码....。

 
Andrey Dik:

这就是问题所在:

在不了解程序库代码的情况下,如何猜测它是什么以及为什么要这样做才能达到目的?

看来,"一窍不通 "的人不止我一个。

例如,m_e--这个小东西是什么? 难道不能叫groupm_key?- 嗯,除了groupName,它什么都不是!字母多得多吗?- 没有,但更清楚了。

一句话:这个函数库非常强大,能创造奇迹,但它是用 "枯燥的语言 "写成的,胆小鬼、哺乳期妇女和儿童最好不要看代码....。

也许你应该试试其他库?

我以前用过它,但它无法在 MQL5(旧版本)上编译 ....您需要调整它...或者试试新版本...

http://www.lordy.co.nf/mql4/

论坛上有关于它的地方...

---------------------

在这里...

https://www.mql5.com/en/code/11134

 
Andrey Dik:

这就是问题所在:

在不了解程序库代码的情况下,如何猜测它是什么以及为什么要这样做才能达到目的?

看来,"一窍不通 "的人不止我一个。

例如,m_e--这个小东西是什么,难道不能叫groupm_key?- 这不就是groupName 吗!字母多得多吗?- 没有,但更清楚了。

一句话:这个库非常强大,能创造奇迹,但它是用 "枯燥的语言 "写成的,胆小鬼、哺乳期妇女和儿童最好不要看代码....。

是谁强迫你进入 m_e 数组的?

我不知道你想从代码中得到什么。我也不知道你在开发什么样的任务。

---

首先,json 是一种数据传输格式和结构。 如果你不理解接收到的数据的结构,那不是我的类的问题,而是你的问题。请查阅你的数据源的文档,在那里寻找理解。

其次--类实现了处理格式的基本功能--序列化、结构存储和便捷处理

如果你想从某个数组中获取数据,你可以编写方便的代码。

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

如果你想从某个数组中获取数据,你可以写一些方便的代码,而不是以循环的形式来获取整个结构的冗长废话。我不知道这到底是怎么回事。

 
Delta.800:

也许你应该换一个图书馆。

我以前用过它,但它无法在 MQL5(旧版本)上编译...您需要调整它...或者试试新版本...

http://www.lordy.co.nf/mql4/

论坛上有关于它的地方....

---------------------

在这里...

https://www.mql5.com/en/code/11134

谢谢,但我完全相信谢尔盖耶夫的代码。

当然,是我的指针太蠢了,我向你道歉。难以阅读 - fii,真是个问题......

 

o_o:

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

而不是以循环形式贯穿整个结构的冗长废话。我不知道这到底是怎么回事。

通过组名,数据可能不存在,或者组不完整,或者组名不在数据中,或者其他......那怎么办?

这种方法更简单明了,而且可以随时检查数组的大小,这样在填充结构时就不会出现问题:

js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());

 

在这种变体中,不清楚如何处理一个不存在的元素

像这样

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

这样

js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());


如果 js["firm1"] 或 js.group [counterFirms] 没有出现,输出什么?

此时将访问 元素并出现错误....

 
o_o:

在这些变体中,不清楚如何处理不存在的元素

像这样

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

这样

js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());


如果没有出现 js["firm1"] 或 js.group [counterFirms],要输出什么?

此时将引用空元素并出错...

商店里有书架,每个流派和作者都有不同的书架(程序使用的结构)。还有一些书籍(数据)可能会或可能不会出现在商店里.....。

当然不是。

以这种方式解决:

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

您需要知道组的名称,如果传入数据中的组是存在的,但名称不存在? 如果 .....就会发生很多事情...

如果至少有一个数据的大小与我们的结构不一致,那么这些数据就是比特数据,没有必要再去搞清楚这些数据中到底有哪些是比特数据,只要忽略这些数据包就可以了。在访问不存在(或空)的数组单元时不会出现问题,也不会对到达数据的正确性产生不确定性。 程序也不会因为某些原因而崩溃

[删除]  

有谁或作者能回答这是否应该支持嵌套 JSON?也就是说,一个 CJAVal 实例包含一个键 "2 "和 "3",它们是另一个 CJAVal 实例。代码似乎可以运行,但在序列化时,键是空白的。

例如,我得到了

{"":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}

但应该得到

{"2":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"3":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}