递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 4827|回复: 17
打印 上一主题 下一主题

[视窗] 火山yyjson有大bug!求修复!或有无其他的json库分享 如zyjson

[复制链接]

3

主题

32

帖子

140

积分

注册会员

Rank: 2

积分
140
跳转到指定楼层
楼主
发表于 2025-3-13 00:54:29 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 2608881662 于 2025-3-13 00:56 编辑

当在循环里,用yyjson数组类里的加入成员命令时
加入的成员(也就是yyjson对象类)无论是否清空,都只会默认最后赋值的yyjson对象

也就是如果需要多次赋值同一个yyjson对象,那么在yyjson数组里就无法多次加入这个对象,无论加入多少次,都是最后一次赋值的重复

也不知道我描述清楚了没有,火山小白刚从易语言转过来,是不是代码有问题求指点,代码奉上

**图片_20250313003206.png (217.7 KB, 下载次数: 294)

**图片_20250313003206.png

yyjson.zip

54.83 KB, 下载次数: 1

回复

使用道具 举报

13

主题

90

帖子

970

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
970
18#
发表于 2025-3-15 21:27:00 | 只看该作者
我封了一个yyjson,命令和官方的一样,可以直接替换官方库,有解决这个问题
回复

使用道具 举报

39

主题

490

帖子

3217

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3217
17#
发表于 2025-3-13 10:34:43 | 只看该作者
<火山程序 类型 = "通常" 版本 = 1 />

变量 对象 <类型 = YYJSON对象类>
变量 数组 <类型 = YYJSON数组类>
如果 (来源对象 == 按钮1)
{
    计次循环 (3)
    {
        // 对象.清空 ()
        对象.重置对象内容 ()
        对象.加入文本成员 ("成员1", "这是成员1-" + 取随机字母数字 (10))
        对象.加入文本成员 ("成员2", "这是成员2-" + 取随机字母数字 (10))
        调试输出 ("以下输出循环内" + 到文本 (取循环索引 ()) + "对象文本\r\n" + 对象.到可读文本 () + "\r\n")
        // 数组.加入成员 (对象)
        数组.缓存并加入成员 (对象)
    }
    调试输出 ("以下输出数组文本\r\n" + 数组.到可读文本 ())
}
返回 (0)
一花一世界,一叶一菩提
回复

使用道具 举报

20

主题

170

帖子

1405

积分

金牌会员

Rank: 6Rank: 6

积分
1405
16#
发表于 2025-3-13 09:18:13 | 只看该作者
2608881662 发表于 2025-3-13 01:50
在循环内  我每次循环开始的时候  清空对象,循环结束的时候用这个对象,没毛病吧
...

好像你写的也没毛病~~
回复

使用道具 举报

20

主题

170

帖子

1405

积分

金牌会员

Rank: 6Rank: 6

积分
1405
15#
发表于 2025-3-13 09:16:30 | 只看该作者
2608881662 发表于 2025-3-13 01:54
因为我在循环内已经将这个对象加入到数组里了   所以要清空,给对象重新赋值
...

啥也不用说,你删掉这行试试?
回复

使用道具 举报

39

主题

490

帖子

3217

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3217
14#
发表于 2025-3-13 09:10:23 | 只看该作者
落雪有声 发表于 2025-3-13 02:19
我记得有个缓存并加入

正解
一花一世界,一叶一菩提
回复

使用道具 举报

29

主题

2400

帖子

8556

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8556
13#
发表于 2025-3-13 08:45:15 | 只看该作者
官方的 yyjson 默认是引用指针(不复制数据),所以内容都一样,应该用「缓存并加入成员」。
但总的来说官方的不太好用,可以用我PIV模块里的 yyjson。
zyjson在论坛里应该就有,不过跟易语言不一样,是封装了 nlohmann/json,速度达不到第一梯队。
回复

使用道具 举报

459

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
44724
12#
发表于 2025-3-13 08:42:56 | 只看该作者
yyjson不适合合成数据。因为为了效率牺牲了很多东西,导致合成数据并不方便,一个对象用完之后就清理了。并不能再次使用了。

这个和yyjson的特性有关系,不算bug。


如果你想合成json数据就正常用   JSON对象类  和 JSON数组类 就行了。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

3

主题

107

帖子

1533

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1533
11#
发表于 2025-3-13 02:19:06 | 只看该作者
我记得有个缓存并加入
回复

使用道具 举报

3

主题

32

帖子

140

积分

注册会员

Rank: 2

积分
140
10#
 楼主| 发表于 2025-3-13 01:54:04 | 只看该作者
没什么鱼 发表于 2025-3-13 01:44
看了下你的代码,你每次循环的时候,都把对象清空了,那么你的对象里永远只有1组对象文本,也就是最后一个 ...

因为我在循环内已经将这个对象加入到数组里了   所以要清空,给对象重新赋值
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-27 10:00 , Processed in 0.103856 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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