在Vue.js前端页面中显示完整JSON格式数据的实现方案
作者:就在呀
这篇文章主要介绍了如何在Vue.js前端页面中将JSON字符串格式化显示为可读的、带缩进的JSON格式,类似于IDE中的代码显示效果,需要的朋友可以参考下
概述
本文档记录了如何在Vue.js前端页面中将JSON字符串格式化显示为可读的、带缩进的JSON格式,类似于IDE中的代码显示效果。
问题描述
当后端返回的JSON数据是字符串格式时,直接在前端显示会呈现为压缩的一行文本,不便于阅读和调试。我们需要将其格式化为标准的JSON格式,包含适当的缩进和换行。
解决方案
1. Vue组件实现
<template>
<div>
<pre>{{ formattedJson }}</pre>
</div>
</template>
<script setup>
import { computed } from 'vue';
// 示例JSON字符串(双重编码)模拟后端返回的数据
let str = '"[{\\"BusinessDate\\":\\"2025-09-11\\",\\"OtherID\\":null,\\"TransOutLines\\":[{\\"ItemInfo\\":{\\"ItemCode\\":\\"109-02-00001\\"},\\"StoreUOMQty\\":1.0000}]}]"';
// 格式化JSON字符串
const formattedJson = computed(() => {
try {
// 处理双重编码的JSON字符串
const parsedString = JSON.parse(str);
const parsedJson = JSON.parse(parsedString);
return JSON.stringify(parsedJson, null, 2);
} catch (error) {
console.error('JSON解析错误:', error);
return 'JSON格式错误';
}
});
</script>
<style scoped lang="scss">
pre {
background-color: #f8f8f8;
border: 1px solid #e1e1e1;
border-radius: 4px;
padding: 16px;
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
font-size: 14px;
line-height: 1.5;
overflow-x: auto;
white-space: pre;
color: #333;
margin: 0;
}
</style>
2. 关键技术点
2.1 双重JSON解析
// 第一次解析:解析外层字符串 const parsedString = JSON.parse(str); // 第二次解析:解析内层JSON const parsedJson = JSON.parse(parsedString);
说明:当JSON数据被双重编码时(字符串中包含转义的JSON),需要进行两次解析。
2.2 JSON格式化
JSON.stringify(parsedJson, null, 2)
参数说明:
parsedJson: 要格式化的JSON对象null: 替换函数(这里不需要)2: 缩进空格数
2.3 CSS样式关键点
pre {
white-space: pre; // 保留所有空格和换行符
font-family: monospace; // 使用等宽字体
overflow-x: auto; // 水平滚动条
background-color: #f8f8f8; // 背景色区分
}
使用场景
- API调试:显示后端返回的JSON数据
- 数据预览:在管理后台展示配置数据
- 日志查看:格式化显示日志中的JSON信息
- 开发调试:临时查看复杂的JSON结构
常见问题及解决方案
问题1:JSON显示为一行
原因:CSS样式中缺少 white-space: pre 属性
解决:确保pre标签包含正确的CSS样式
问题2:JSON解析失败
原因:
- JSON字符串格式不正确
- 需要多次解析(双重编码)
- 特殊字符转义问题
解决:
try {
// 根据实际情况调整解析次数
let result = JSON.parse(str);
if (typeof result === 'string') {
result = JSON.parse(result);
}
return JSON.stringify(result, null, 2);
} catch (error) {
console.error('解析错误:', error);
return '数据格式错误';
}
问题3:长JSON内容显示不全
解决:添加滚动条和最大高度限制
pre {
max-height: 500px;
overflow-y: auto;
overflow-x: auto;
}
总结
通过合理的JSON解析和CSS样式设置,可以在前端页面中优雅地显示格式化的JSON数据。关键点包括:
- 正确处理JSON字符串的编码层级
- 使用
JSON.stringify()进行格式化 - 设置合适的CSS样式保持格式
- 添加错误处理机制
这种方法简单有效,适用于大多数JSON数据展示场景。
以上就是在Vue.js前端页面中显示完整JSON格式数据的实现方案的详细内容,更多关于Vue前端显示完整JSON数据的资料请关注脚本之家其它相关文章!
