一个特殊的 Json 『美化』工具

liuidetmks · 2 小时前 · 824 次点击

之所以叫美化而不叫格式化,是因为是给人看的,改变了数据结构 

各个业务之间传递数据,喜欢用 jsonstring

传递层级一多,满屏的转义符,没法看了

看了一些 格式化工具,都是保持原来数据结构,以保证程序正确运行为先,没有这种自动美化的

美化后数据不能直接喂给程序哦~~

原始的
{
    "l": 2,
    "v": "{\"l\":1,\"v\":\"{\\\"l\\\":0,\\\"v\\\":\\\"{\\\\\\\"a\\\\\\\":[{\\\\\\\"l\\\\\\\":2,\\\\\\\"v\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"l\\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\\"v\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"l\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"v\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"AAAA\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\\\\\"}\\\\\\\"},{\\\\\\\"l\\\\\\\":1,\\\\\\\"v\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"l\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\"v\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"BBBB\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"}\\\\\\\\\\\\\\\"}\\\\\\\"}],\\\\\\\"value\\\\\\\":\\\\\\\"CCC\\\\\\\"}\\\"}\"}"
}



// 美化后

{
    "l": 2,
    "v": {
        "l": 1,
        "v": {
            "l": 0,
            "v": {
                "a": [
                    {
                        "l": 2,
                        "v": {
                            "l": 1,
                            "v": {
                                "l": 0,
                                "v": {
                                    "value": "AAAA"
                                }
                            }
                        }
                    },
                    {
                        "l": 1,
                        "v": {
                            "l": 0,
                            "v": {
                                "value": "BBBB"
                            }
                        }
                    }
                ],
                "value": "CCC"
            }
        }
    }
}


举报· 824 次点击
登录 注册 站外分享
7 条回复  
wangtian2020 小成 2 小时前
有的,把发送字符串 object 的后端打一顿,他就自动美化了
6364v2 初学 2 小时前
蹲一个,我也想找个能自动去转义的 json 工具
liuidetmks 楼主 小成 2 小时前
@wangtian2020 有时候跨业务,甚至跨公司,还是字符串最稳 😂
wangtian2020 小成 2 小时前
我对菜 Java Boy 的 PTSD 又要发作了,多找一下后端的麻烦,少找自己的问题
liuidetmks 楼主 小成 2 小时前
@6364f 忘记发链接了 https://lei.pages.dev/jsontool
x86 初学 2 小时前
可以用 GPT 写一个,"JSON 去除转移缩进美化返回给我" ```json { "l": 2, "v": { "l": 1, "v": { "l": 0, "v": { "a": [ { "l": 2, "v": { "l": 1, "v": { "l": 0, "v": { "value": "AAAA" } } } }, { "l": 1, "v": { "l": 0, "v": { "value": "BBBB" } } } ], "value": "CCC" } } } } ```
hellojukay 初学 1 小时前
```golang package main import ( "encoding/json" "fmt" "io" "os" ) // recursivelyUnescapeJSON 递归处理嵌套的 JSON 字符串 func recursivelyUnescapeJSON(data interface{}) interface{} { switch v := data.(type) { case map[string]interface{}: // 处理对象 result := make(map[string]interface{}) for key, value := range v { if key == "v" { // 特殊处理 "v" 字段中的 JSON 字符串 if strValue, ok := value.(string); ok { var parsed interface{} if err := json.Unmarshal([]byte(strValue), &parsed); err == nil { result[key] = recursivelyUnescapeJSON(parsed) continue } } } result[key] = recursivelyUnescapeJSON(value) } return result case []interface{}: // 处理数组 result := make([]interface{}, len(v)) for i, value := range v { result[i] = recursivelyUnescapeJSON(value) } return result case string: return v default: return v } } func main() { // 从标准输入读取所有内容 input, err := io.ReadAll(os.Stdin) if err != nil { fmt.Fprintf(os.Stderr, "Error reading from stdin: %v\n", err) os.Exit(1) } // 创建一个通用的 interface{} 来存储任意 JSON 数据 var data interface{} // 将输入的 JSON 字符串解析为对象 if err := json.Unmarshal(input, &data); err != nil { fmt.Fprintf(os.Stderr, "Error parsing JSON: %v\n", err) os.Exit(1) } // 递归处理所有嵌套的 JSON 字符串 processed := recursivelyUnescapeJSON(data) // 将对象重新转换为 JSON 字符串,使用缩进格式化 output, err := json.MarshalIndent(processed, "", " ") if err != nil { fmt.Fprintf(os.Stderr, "Error converting back to JSON: %v\n", err) os.Exit(1) } // 输出结果 fmt.Println(string(output)) } ```
返回顶部