大家好,我是零点博客的博主。最近在整理项目代码时,发现频繁需要校验和格式化 Json数据,手写解析实在太累,于是决定利用周末时间,用 C# 开发一个轻量级的在线 JSON 数据格式化工具。这里把开发过程中的底层逻辑、正则校验以及接口开发的细节复盘一下,希望能帮到正在做 EMLOG 主题或通用工具开发的站长。

一、需求分析与技术选型

这个工具不需要复杂的数据库,但需要处理高并发请求。考虑到后端生态的成熟度,我们选用 C# 配合 .NET Core。

核心功能点:

  • 接收前端提交的字符串。
  • 使用 C# 强大的库解析 Json数据
  • 利用正则表达式校验语法是否正确。
  • 返回格式化后的 HTML 或纯文本。

二、C# 后端解析 Json 数据的核心逻辑

在接口开发中,处理用户输入的文本是家常便饭。为了确保稳定性,我们引入了 Newtonsoft.Json 库。

public class JsonToolController : Controller
{
    public IActionResult FormatJson()
    {
        string rawJson = Request.Form["data"];
        // 1. 正则校验 Json 字符串是否符合基本规范
        if (!IsValidJson(rawJson))
        {
            return Json(new { error = "JSON 语法格式错误" });
        }

        try
        {
            // 2. 解析 Json 数据到 JObject
            JObject obj = JObject.Parse(rawJson);
            // 3. 转换回格式化后的字符串(缩进为 4 个空格)
            string formatted = obj.ToString(Formatting.Indented);
            return Content(formatted, "text/plain");
        }
        catch (Exception ex)
        {
            return Json(new { error = ex.Message });
        }
    }
}

三、正则表达式校验与爬虫开发思维

很多朋友问,怎么保证用户传的不是乱码?这时候正则表达式就派上用场了。虽然爬虫开发更多是用于抓取网页,但其中的数据清洗思维是通用的。

我们需要确保用户输入的是合法的 JSON 开头。正则可以这样写:

// 简单校验 Json 是否以 { 或 [ 开头
private bool IsValidJson(string strInput)
{
    strInput = strInput.Trim();
    return (strInput.StartsWith("{") || strInput.StartsWith("[") || 
           strInput.StartsWith("\"")) && strInput.EndsWith("}") || strInput.EndsWith("]");
}

四、前端交互与 SQL 注入防护

前端使用原生 HTML/CSS/JS,通过 AJAX 请求后端接口。

很多新手在写 MySQL 数据交互时,习惯直接拼接 SQL 语句,这在 Web 开发中是大忌。虽然我们的工具目前不需要存入数据库,但如果未来打算将工具生成的代码存入 EMLOG 的数据库,请务必使用预处理语句。这就好比给数据库穿了一层防弹衣,能有效防止黑客进行 SQL注入

五、实战避坑指南

  1. 字符编码问题: 解析 Json数据 时,切记设置 UTF-8 编码,否则中文会变成乱码。
  2. 异常捕获: 哪怕用了正则校验,JObject.Parse 依然可能抛出异常,必须包裹在 try-catch 中。
  3. XML 解析备选: 如果是处理接口对接,有时候对方给的是 XML 格式,这时候就需要结合 XML 解析,再转换为 JSON 供前端调用。

这套流程跑通后,不仅实现了工具开发,也让我对 C# 的类型系统有了更深的理解。源码已上传至零点博客,欢迎交流。