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

在JSP中使用GSON后,如何将JSON显示为树形视图

解决JSP中JSON树形/格式化展示问题

你遇到的核心问题是:浏览器渲染HTML时会自动忽略文本中的换行和缩进,导致Gson生成的格式化JSON字符串在页面上显示为无格式的普通文本,而控制台能正常显示格式。以下是几种可行的解决方案:

方法一:使用<pre>标签保留格式

<pre>标签会完全保留文本的原始格式(包括换行、缩进),是最简单的解决方式。修改你的JSP代码中JSON输出部分:

<td align="center"><div contenteditable="true"><pre><%=prettyJson%></pre></div></td>

如果需要调整显示样式(比如背景、滚动),可以给<pre>添加CSS样式:

pre {
    background-color: #f5f5f5;
    padding: 10px;
    border-radius: 4px;
    overflow-x: auto;
    max-height: 300px;
}

方法二:转义换行和空格为HTML元素

将JSON字符串中的换行符\n替换为<br>,缩进空格替换为&nbsp;,让浏览器识别格式:

<%
// 在生成prettyJson后添加转义逻辑
String prettyJsonHtml = prettyJson.replace("\n", "<br>").replace("    ", "&nbsp;&nbsp;&nbsp;&nbsp;");
%>
<td align="center"><div contenteditable="true"><%=prettyJsonHtml%></div></td>

这种方式适合需要自定义格式细节的场景,但相比<pre>标签更繁琐。

方法三:使用前端库实现语法高亮+可折叠树形视图

如果需要更专业的展示效果(比如语法高亮、节点折叠),可以使用前端JSON格式化库(如highlight.js、json-viewer),步骤如下:

  1. 下载库文件:将库的CSS和JS文件下载到项目静态资源目录(如webapp/css、webapp/js)
  2. 在JSP头部引入资源:
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/github.min.css">
<script src="${pageContext.request.contextPath}/js/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
  1. 修改JSON输出代码:
<td align="center"><div contenteditable="true"><code class="json"><%=prettyJson%></code></div></td>

额外优化建议

  • 避免在循环内重复创建Gson实例,将Gson gson = new GsonBuilder().setPrettyPrinting().create();移到循环外部,提升性能:
<%
Gson gson = new GsonBuilder().setPrettyPrinting().create();
for(String strCol : ResultSetColumnNames) {
    // ... 原有循环逻辑
}
%>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:36:07