amwji 发表于 2021-5-17 13:18:20

学习学习

a870840081 发表于 2021-5-17 21:41:21

a870840081 发表于 2021-5-17 01:21
鸡毛系统自带的 会崩溃 我试试这个

以为库问题 我json文本毡包了 哎!菜逼打脸啊

shuimiao 发表于 2021-5-17 23:24:57

请教下,json.节点() 返回的json类,好像火山默认是拷贝一份新的json类,而不是参考原先的json类吧

如果返回的是拷贝,那对拷贝的修改,不就无法影响原先json类吗?如果楼主返回的是参考,那请教是如何实现的,我看了代码,最后就一个 返回(本对象)。假如要返回json类的一个嵌套子json类该如何实现参考返回?

Ewangl 发表于 2021-5-18 01:03:25

shuimiao 发表于 2021-5-17 23:24
请教下,json.节点() 返回的json类,好像火山默认是拷贝一份新的json类,而不是参考原先的json类吧

如果返 ...

返回的是本类引用(源指针),但这不是重点(关键)!在此类中还存在一个结构数据变量,含主指针及游动指针!主要是需要操作它。当然,有个缺点,操作同一个类多线程下不安全!。

shuimiao 发表于 2021-5-18 02:07:11

本帖最后由 shuimiao 于 2021-5-18 02:11 编辑

Ewangl 发表于 2021-5-18 01:03
返回的是本类引用(源指针),但这不是重点(关键)!在此类中还存在一个结构数据变量,含主指针及游动指 ...
我研究了下,就是像你说的内部有一个固定的数据结构变量(估计是本程序跨类全局的),所以无论怎么返回json类,都是指向这个数据结构变量,而节点()方法只是用来在类内部定位要读写的节点名称,而不是返回具体节点结构。而火山方法的返回确实只是拷贝,不存在引用,因为这个类内部数据是跨类全局的,所以返回的类不管是拷贝还是引用都不会影响内部读写。

不过这样就无法另外建立一个json类变量来单独操作了,因为无论多少个json类变量,操作领域都指向了一个全局的数据结构变量。这样局限性就大了,而且多线程也容易混乱。

我在用火山开发一个高性能JSON读写库,需要返回值是参考引用而不是拷贝,也需要变量支持参考属性,可吴总就是没加入。虽然没有返回参考,但还是能变通的,比如遍历内部写值,或者写指针处数据,只是比较麻烦而已

Ewangl 发表于 2021-5-18 13:54:54

shuimiao 发表于 2021-5-18 02:07
我研究了下,就是像你说的内部有一个固定的数据结构变量(估计是本程序跨类全局的),所以无论怎么返回jso ...

你这样一说,我还没注意,的确如此。我的理解是类中嵌入变量在初始化栈中,这火山打破了我认知。你加我QQ吧,我改造一下。452327180

2oon 发表于 2021-5-18 20:33:31

不懂,顶顶没毛病
页: 1 [2]
查看完整版本: 为火山添砖加瓦 - JSON库