520MianXiangDuiXiang520/json-diff

[BUG] json序列化和lcs计算好像有点问题

BeanWei opened this issue · 4 comments

Describe the bug
感谢开源,比较了同类型的lib,您的实现性能是最好的。但是asdiff和lcs的测试貌似太少了,可以看下我贴出来的例子,这个比较典型,json序列化和lcs在下面的例子中都会报错

To Reproduce
you code:

json1 := `{"A": 1, "B": [1, 2, 3], "C": [1, 2]}`
json2 := `{"A": 1, "B": [1, 3], "C": [2, 1], "D": 6}`
AsDiffs([]byte(json1), []byte(json2), UseMoveOption, UseCopyOption, UseFullRemoveOption)

再次感谢您的开源!!!

我这边也遇到了这个问题, 看起来是 列表中, 存在相反的数据,就必现这种问题,例如下面的json
json1 := {"C": [1, 2]}
json2 := {"C": [2, 1]}

辛苦作者看看呢
image

感谢关注,已经修复这个问题啦

感谢!但是 json 解析有问题

json1 := `{"A": 1, "B": [1, 2, 3], "C": [1, 2]}`
json2 := `{
	"A": 1, "B": [1, 3], "C": [2, 1], "D": 6
}`

上面的json2只是换行了,应该是正常的json吧,但是貌似无法被 自定义的json解析lib处理,在标准库下是可以的。

lcs 修复之后 我跑了下性能能测试,正常通过的情况下 性能降低了很多,拿掉所有 options 依然没有之前高。得出的结论就是:在简单的 kv 处理上很快,但是涉及复杂的值类型的时候性能下降的很明显。

但是依然十分感谢作者的开源!里面类似 Add 和 Remove 合并成 move 的策略是其他lib里没有,这个对我来说有很大的参考价值。感谢🙏

json解析的问题暂时已经修复,但自定义的json解析器并没有考虑很多的特殊情况,所以它可能在一些特殊情况下无法使用,为了保险起见,我退回使用的官方的解析器,而在预发布版 v0.2.2-pre 上继续使用了自定义的这个解析器,未来有时间我会继续对他优化,包括您提到的性能问题.再次感谢您的关注和建议,也欢迎您直接提pr