Vue3项目JSON格式化工具技术实现详解

简介: 本文详解JSON格式化工具的前端实现,涵盖Composable核心逻辑(格式化、压缩、自动修复)与Vue交互优化(防抖预览、高亮动态加载、实时错误反馈),代码简洁高效,体验流畅。

JSON格式化工具技术实现详解

本文深入解析本项目中JSON格式化工具的前端实现,涵盖核心算法(Composable)与界面交互(Vue)。

在线工具网址:https://see-tool.com/encoding-converter

工具截图:
工具截图.png

一、核心逻辑 (Composable Implementation)

业务逻辑封装在 useJsonFormatter 中,实现纯函数的逻辑复用。

1. 格式化 (Format)

利用 JSON.stringify 的第三个参数控制缩进。

const formatJson = (input, escape = false) => {
   
    let formatted = JSON.stringify(JSON.parse(input), null, 2);
    // 二次序列化实现转义:JSON.stringify(str).slice(1, -1)
    return escape ? JSON.stringify(formatted).slice(1, -1) : formatted;
};

2. 压缩 (Minify)

去除 space 参数即可移除空白。

const minifyJson = (input) => JSON.stringify(JSON.parse(input));

3. 自动修复 (Auto Fix)

针对非标准JSON(如有损粘贴),采用“正则替换 + JS执行”的双重降级策略。

  1. 正则预处理:替换单引号、移除尾随逗号、给Key加引号。
  2. 兜底解析:若 JSON.parse 失败,使用 new Function 解析JS对象字面量(如 {a:1})。

二、界面交互 (Vue Page Implementation)

UI层主要处理状态管理、实时反馈与性能优化。

1. 防抖实时预览

为了提供流畅体验,输入框绑定了防抖(Debounce)监听器。用户停止输入500ms后自动触发静默格式化。

// watch debounce 实现
let timer = null;
watch([jsonInput, escapeOutput], () => {
   
    if(timer) clearTimeout(timer);
    timer = setTimeout(() => {
   
        if(jsonInput.value.trim()) {
   
            handleFormat(true); // true 表示静默模式,不弹出的Toast提示
        }
    }, 500);
})

2. 高亮库的动态加载 (Performance)

highlight.js 体积较大,仅在客户端挂载时动态引入,避免阻塞服务端渲染(SSR)首屏。

onMounted(async () => {
   
    if (!process.client) return;

    // 动态创建 script 标签加载 CDN 资源
    // 优先复用 window.hljs 避免重复加载
    await loadHighlightLibrary(); 

    // 初始化高亮
    highlight.highlightElement(codeRef.value);
});

3. 输入容错与反馈

UI通过 inputError 状态即时展示解析错误位置,配合红色警告框,提升调试效率。

try {
   
    const res = formatJson(input);
    jsonOutput.value = res;
    inputError.value = '';
} catch (e) {
   
    // 捕获 JSON.parse 的错误信息直接展示
    inputError.value = e.message; 
}
目录
相关文章
|
1月前
|
JSON JavaScript 算法
JSON格式化与压缩 在线工具分享
一款基于Vue 3开发的轻量级JSON在线工具,支持一键格式化、极致压缩、字符串转义/去转义及智能自动修复(兼容单引号、省略引号等非标写法)。无广告、带语法高亮、夜间模式与一键复制,提升开发效率。
202 11
JSON格式化与压缩 在线工具分享
|
1月前
|
存储 人工智能 算法
从“支撑搜索”到“图谱推理”:Graph RAG落地全攻略
AI博主深度解析RAG演进:从基础“查字典”到图谱RAG“看地图”,再到代理RAG“招管家”。重点拆解KG-RAG如何用知识图谱(三元组+逻辑路径)抑制大模型幻觉,提升垂直领域推理精度,并提供查询增强、子图检索、CoT提示等实战指南。(239字)
153 1
|
1月前
|
Web App开发 人工智能 运维
3分钟让Chrome变聪明!Google AI保姆级激活教程!
本文手把手教你开启Chrome内置Gemini AI功能:自动网页总结、智能填表、购物比价、图片修改等。无需编程基础,提供“快捷方式”和“脚本激活”两种方法,适配美区账号+英文语言设置,5分钟即可让Chrome拥有AI大脑!
1549 9
|
1月前
|
移动开发 JavaScript 安全
文件16进制查看器 在线工具分享
一款基于Vue 3开发的在线文件十六进制查看器,纯前端运行,文件不上传、隐私安全;支持任意格式,提供空格/紧凑/大写三种Hex显示模式,一键复制或下载。即开即用,轻量高效。
351 9
文件16进制查看器 在线工具分享
|
存储 JSON 前端开发
SpringMVC之JSON返回&异常处理机制(带你学习新的SpringMVC武功秘籍)
SpringMVC之JSON返回&异常处理机制(带你学习新的SpringMVC武功秘籍)
452 0
|
1月前
|
人工智能 运维 供应链
对待 Skills,请理性祛魅
本文深度解析Anthropic推出的Agent Skills技术:剖析其“渐进式披露”原理、模块化设计及在降本、可维护性、跨模型迁移等方面的显著优势;同时警示26.1%高漏洞率带来的安全风险,呼吁开发者理性祛魅、平台筑牢安全护栏。
448 2
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10477 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用

热门文章

最新文章