递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
12
返回列表 发新帖
楼主: Ewangl
打印 上一主题 下一主题

[视窗] 为火山添砖加瓦 - JSON库

[复制链接]

92

主题

670

帖子

3759

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3759
11#
发表于 2021-5-17 13:18:20 | 只看该作者
学习学习
回复

使用道具 举报

6

主题

38

帖子

573

积分

核心用户

菜鸡

Rank: 9Rank: 9Rank: 9

积分
573
12#
发表于 2021-5-17 21:41:21 | 只看该作者
a870840081 发表于 2021-5-17 01:21
鸡毛系统自带的 会崩溃 我试试这个

以为库问题 我json文本毡包了 哎!菜逼打脸啊
正版商业用户
回复

使用道具 举报

411

主题

2518

帖子

8306

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8306
13#
发表于 2021-5-17 23:24:57 | 只看该作者
请教下,json.节点() 返回的json类,好像火山默认是拷贝一份新的json类,而不是参考原先的json类吧

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

使用道具 举报

7

主题

20

帖子

407

积分

中级会员

Rank: 3Rank: 3

积分
407
14#
 楼主| 发表于 2021-5-18 01:03:25 | 只看该作者
shuimiao 发表于 2021-5-17 23:24
请教下,json.节点() 返回的json类,好像火山默认是拷贝一份新的json类,而不是参考原先的json类吧

如果返 ...

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

使用道具 举报

411

主题

2518

帖子

8306

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8306
15#
发表于 2021-5-18 02:07:11 | 只看该作者
本帖最后由 shuimiao 于 2021-5-18 02:11 编辑
Ewangl 发表于 2021-5-18 01:03
返回的是本类引用(源指针),但这不是重点(关键)!在此类中还存在一个结构数据变量,含主指针及游动指 ...

我研究了下,就是像你说的内部有一个固定的数据结构变量(估计是本程序跨类全局的),所以无论怎么返回json类,都是指向这个数据结构变量,而节点()方法只是用来在类内部定位要读写的节点名称,而不是返回具体节点结构。而火山方法的返回确实只是拷贝,不存在引用,因为这个类内部数据是跨类全局的,所以返回的类不管是拷贝还是引用都不会影响内部读写。

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

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

使用道具 举报

7

主题

20

帖子

407

积分

中级会员

Rank: 3Rank: 3

积分
407
16#
 楼主| 发表于 2021-5-18 13:54:54 | 只看该作者
shuimiao 发表于 2021-5-18 02:07
我研究了下,就是像你说的内部有一个固定的数据结构变量(估计是本程序跨类全局的),所以无论怎么返回jso ...

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

使用道具 举报

13

主题

241

帖子

1890

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1890
17#
发表于 2021-5-18 20:33:31 | 只看该作者
不懂,顶顶没毛病
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-29 06:41 , Processed in 0.094440 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表