我正在编写一个简单的 Go 程序来使用一个简单的 API。某些值未正确解组到我的结构中,并且我已将问题追溯到返回的 JSON 对象中的无效键名称。
我可以使用以下代码重现该问题:
jsonStr := `{
"valid_json": "I'm Valid",
"invalid'json": "I should be valid, but I'm not"
}`
type result struct {
Valid string `json:"valid_json"`
Invalid string `json:"invalid'json"`
}
var res result
err := json.Unmarshal([]byte(jsonStr), &res)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Valid: %s\n", res.Valid)
fmt.Printf("Invalid: %s\n", res.Invalid)
Run Code Online (Sandbox Code Playgroud)
结果输出:
Valid: I'm Valid
Invalid:
Run Code Online (Sandbox Code Playgroud)
我的预期输出:
Valid: I'm Valid
Invalid: I should be valid, but I'm not
Run Code Online (Sandbox Code Playgroud)
我尝试过诸如转义'结构标记之类的选项,但这要么会导致错误,要么会被忽略。我也研究过其他方法,但空手而归。
我这边该如何妥善处理这个问题呢?在解组之前剥离会更好吗'?或者还有其他方法可以接受单引号吗?