Json diff 定制化需求

本文探讨了在实现JSON对比时高亮不同值并显示波动范围的需求,介绍了CodeMirror、Monaco-Editor、json-editor等编辑器的优劣,并详细分析了jsdiff与diff2html的渲染方案。在满足特定波动范围要求的情况下,推荐使用jsdiff结合自定义渲染以控制样式。

需求背景

有一个比较 json 的需求,希望对比高亮不同的值,并给出对应的key值一个波动范围,比较不同的值,如果超出波动范围则进一步高亮并在后面给出对应的变化率。效果上有点像下图 diffchecker 提供的样式内容上再定制化。

image.png

下面调研了几种方案,并简单介绍它们的优劣和不同。

  • codemirror merge 插件
  • monaco-editor
  • json-editor
  • jsdiff 自渲染
  • jsdiff diff2html

codemirror

挺强大的一个编辑器内容,核心功能比较简单,但是提供了较多的api和插件实现功能。

codemirror.net/demo/merge.…

效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcnVELCK-1654054670445)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/69bb72d2089c493885a854ab2aca57ad~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)]

需要搭配 diff-match-patch 这个 diff 包来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值