递归火山软件开发平台

标题: 火山yyjson有大bug!求修复!或有无其他的json库分享 如zyjson [打印本页]

作者: 2608881662    时间: 2025-3-13 00:54
标题: 火山yyjson有大bug!求修复!或有无其他的json库分享 如zyjson
本帖最后由 2608881662 于 2025-3-13 00:56 编辑

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

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

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


作者: 2608881662    时间: 2025-3-13 00:57
求指点  到底是bug还是我的写法问题???
作者: 拒绝吃鱼的猫    时间: 2025-3-13 01:08
覆盖了?
作者: 折戟沉沙    时间: 2025-3-13 01:11
正常,这个我很早之前就知道了,我记得以前还反馈给官方,官方不修复,那没辙,你只能换第三方库,或者自己重新封库,官方很多库,版本又老,又没人维护,慎用。
作者: 2608881662    时间: 2025-3-13 01:21
拒绝吃鱼的猫 发表于 2025-3-13 01:08
覆盖了?

对啊   感觉应该时bug
作者: 2608881662    时间: 2025-3-13 01:25
折戟沉沙 发表于 2025-3-13 01:11
正常,这个我很早之前就知道了,我记得以前还反馈给官方,官方不修复,那没辙,你只能换第三方库,或者自己 ...

有推荐吗
作者: 折戟沉沙    时间: 2025-3-13 01:39
2608881662 发表于 2025-3-13 01:25
有推荐吗

piv类库
作者: 没什么鱼    时间: 2025-3-13 01:44
看了下你的代码,你每次循环的时候,都把对象清空了,那么你的对象里永远只有1组对象文本,也就是最后一个。在循环 结束后,你的数组里的对象当然之后最后一组文本。
作者: 2608881662    时间: 2025-3-13 01:50
没什么鱼 发表于 2025-3-13 01:44
看了下你的代码,你每次循环的时候,都把对象清空了,那么你的对象里永远只有1组对象文本,也就是最后一个 ...

在循环内  我每次循环开始的时候  清空对象,循环结束的时候用这个对象,没毛病吧

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

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

作者: 落雪有声    时间: 2025-3-13 02:19
我记得有个缓存并加入
作者: 创世魂    时间: 2025-3-13 08:42
yyjson不适合合成数据。因为为了效率牺牲了很多东西,导致合成数据并不方便,一个对象用完之后就清理了。并不能再次使用了。

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


如果你想合成json数据就正常用   JSON对象类  和 JSON数组类 就行了。

作者: Xelloss0618    时间: 2025-3-13 08:45
官方的 yyjson 默认是引用指针(不复制数据),所以内容都一样,应该用「缓存并加入成员」。
但总的来说官方的不太好用,可以用我PIV模块里的 yyjson。
zyjson在论坛里应该就有,不过跟易语言不一样,是封装了 nlohmann/json,速度达不到第一梯队。
作者: 兵三进一    时间: 2025-3-13 09:10
落雪有声 发表于 2025-3-13 02:19
我记得有个缓存并加入

正解
作者: 没什么鱼    时间: 2025-3-13 09:16
2608881662 发表于 2025-3-13 01:54
因为我在循环内已经将这个对象加入到数组里了   所以要清空,给对象重新赋值
...

啥也不用说,你删掉这行试试?
作者: 没什么鱼    时间: 2025-3-13 09:18
2608881662 发表于 2025-3-13 01:50
在循环内  我每次循环开始的时候  清空对象,循环结束的时候用这个对象,没毛病吧
...

好像你写的也没毛病~~
作者: 兵三进一    时间: 2025-3-13 10:34
<火山程序 类型 = "通常" 版本 = 1 />

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

作者: aixunsoft    时间: 2025-3-15 21:27
我封了一个yyjson,命令和官方的一样,可以直接替换官方库,有解决这个问题




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4