在Vue.js前端页面中显示完整JSON格式数据的实现方案

 更新时间:2025年09月24日 08:37:55   作者:就在呀  
这篇文章主要介绍了如何在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;  // 背景色区分
}

使用场景

  1. API调试:显示后端返回的JSON数据
  2. 数据预览:在管理后台展示配置数据
  3. 日志查看:格式化显示日志中的JSON信息
  4. 开发调试:临时查看复杂的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数据。关键点包括:

  1. 正确处理JSON字符串的编码层级
  2. 使用 JSON.stringify() 进行格式化
  3. 设置合适的CSS样式保持格式
  4. 添加错误处理机制

这种方法简单有效,适用于大多数JSON数据展示场景。

以上就是在Vue.js前端页面中显示完整JSON格式数据的实现方案的详细内容,更多关于Vue前端显示完整JSON数据的资料请关注脚本之家其它相关文章!

相关文章

  • Vue3如何自定义指令directive(如权限控制)

    Vue3如何自定义指令directive(如权限控制)

    本文详细介绍了如何在Vue3项目中创建自定义指令directive1,首先,在src/directives/index.ts文件中引入自定义指令,然后,创建src/directives/permission.ts文件来定义具体指令逻辑,在main.ts文件中引入并注册该指令,最后,在页面中使用自定义指令
    2024-12-12
  • Vue中的computed与watch底层实现原理最佳实践

    Vue中的computed与watch底层实现原理最佳实践

    本文介绍Vue中computed和watch的底层实现原理,对比了核心概念、设计差异以及使用场景,通过分析computed的初始化、依赖追踪、缓存机制,以及watch的初始化、深度监听、异步更新,本文提供了一个全面的对比总结,并给出了性能优化和最佳实践建议,感兴趣的朋友一起看看吧
    2026-01-01
  • 登录页面的实现及跳转代码实例(vue-router)

    登录页面的实现及跳转代码实例(vue-router)

    在Vue.js中可以使用vue-router来实现前端路由,通过路由来跳转页面,这篇文章主要给大家介绍了关于登录页面的实现及跳转(vue-router)的相关资料,需要的朋友可以参考下
    2023-12-12
  • element中Select选择器实现自定义显示内容

    element中Select选择器实现自定义显示内容

    在我们很多前端业务开发中,往往为了方便,都需要自定义一些用户组件,本文主要介绍了element中Select选择器实现自定义显示内容,感兴趣的可以了解一下
    2023-12-12
  • Vue项目打包成Docker镜像包的简单步骤

    Vue项目打包成Docker镜像包的简单步骤

    最近做时速云项目部署,需要将前端项目打成镜像文件,下面这篇文章主要给大家介绍了关于Vue项目打包成Docker镜像包的简单步骤,需要的朋友可以参考下
    2023-10-10
  • Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    这篇文章主要介绍了Vue3.x的版本中build后dist文件中出现legacy的js文件问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 详解使用webpack打包编写一个vue-toast插件

    详解使用webpack打包编写一个vue-toast插件

    本篇文章主要介绍了详解使用webpack打包编写一个vue插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • vue中实现展示与隐藏侧边栏功能

    vue中实现展示与隐藏侧边栏功能

    这篇文章主要介绍了vue中实现展示与隐藏侧边栏功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue服务端渲染缓存应用详解

    vue服务端渲染缓存应用详解

    vue缓存分为页面缓存、组建缓存、接口缓存,这里我主要说到了页面缓存和组建缓存。接下来通过本文给大家介绍vue服务端渲染缓存应用 ,需要的朋友可以参考下
    2018-09-09
  • vue前端导出多级表头的excel表的示例代码

    vue前端导出多级表头的excel表的示例代码

    本文主要介绍了vue前端导出多级表头的excel表的示例代码,可以使用xlsx库来创建Excel文件,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-06-06

最新评论