You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jsondiffpatch库HTML可视化diff渲染结果与官方Demo不一致问题求助

jsondiffpatch 渲染效果与官方Demo不一致解决方案

1. 优先检查是否引入配套CSS样式

jsondiffpatch的HTML格式化器仅生成DOM结构,所有高亮、删除线、差异背景色、层级缩进效果都依赖自带的样式文件,未引入时会出现无样式、结构混乱的问题,是最常见的报错原因。
你需要在页面头部引入对应样式:

<!-- 基础HTML diff 样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jsondiffpatch/dist/formatters-styles/html.css">
<!-- 可选:如果需要标注提示样式可引入 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jsondiffpatch/dist/formatters-styles/annotated.css">

2. 检查入参类型是否为JSON对象

你是从Blazor侧调用方法,如果Blazor传递的left、right参数是序列化后的JSON字符串而非JS对象,jsondiffpatch会对两个字符串做全文比对,而非对JSON结构做字段级比对,导致diff结果完全不符合预期。
修改代码增加类型判断和转换:

window.renderDiff = function (left, right, element) {
  // 入参为字符串时先转换为JSON对象
  const leftObj = typeof left === 'string' ? JSON.parse(left) : left;
  const rightObj = typeof right === 'string' ? JSON.parse(right) : right;
  const delta = jsondiffpatch.diff(leftObj, rightObj);
  element.innerHTML = jsondiffpatch.formatters.html.format(delta, leftObj);
  // 确保DOM渲染完成后再触发显示未变更字段
  setTimeout(() => jsondiffpatch.formatters.html.showUnchanged(), 0);
  return element.innerHTML;
}

3. 确认依赖版本与官方Demo一致

如果你使用的是过老版本或者beta测试版的jsondiffpatch,默认配置、API逻辑可能与官方Demo所用的稳定版存在差异。建议使用官方维护的稳定版CDN资源:

<script src="https://cdn.jsdelivr.net/npm/jsondiffpatch/dist/jsondiffpatch.umd.min.js"></script>

内容的提问来源于stack exchange,提问作者DLeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:12:02