目录

go 格式化修复 json 字符串

目录

问题

有些 json 字符串可能出现格式问题,

当 go 使用 json.Unmarshal 时,存在 json 字符串数据不是标准的 json 格式,导致反序列化失败

解决

使用 json.Indent 进行修复

package main

import (
    "encoding/json"
    "fmt"
    "strings"
)

func main() {
    jsonData := `{"field1": "value1", "field2": 42`

    // 修复 JSON 数据为正确的格式
    var b strings.Builder
    err := json.Indent(&b, []byte(jsonData), "", "\t")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    // 获取修复后的 JSON 数据
    fixedJSON := b.String()
    fmt.Println("Fixed JSON:", fixedJSON)

    // 解析修复后的 JSON 数据
    var data map[string]interface{}
    err = json.Unmarshal([]byte(fixedJSON), &data)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Parsed data:", data)
}