【发布时间】:2022-12-11 06:42:25
【问题描述】:
我对此感到很不解。 我需要加载一些以 JSON 序列化的数据(来自法语数据库),其中一些键带有单引号。
这是一个简化版本:
package main
import (
"encoding/json"
"fmt"
)
type Product struct {
Name string `json:"nom"`
Cost int64 `json:"prix d'achat"`
}
func main() {
var p Product
err := json.Unmarshal([]byte(`{"nom":"savon", "prix d'achat": 170}`), &p)
fmt.Printf("product cost: %d\nerror: %s\n", p.Cost, err)
}
// product cost: 0
// error: %!s(<nil>)
解组不会导致错误,但是“prix d'achat”(p.Cost)未正确解析。
当我解组为 map[string]any 时,“prix d'achat”键被解析为我所期望的:
package main
import (
"encoding/json"
"fmt"
)
func main() {
blob := map[string]any{}
err := json.Unmarshal([]byte(`{"nom":"savon", "prix d'achat": 170}`), &blob)
fmt.Printf("blob: %f\nerror: %s\n", blob["prix d'achat"], err)
}
// blob: 170.000000
// error: %!s(<nil>)
我检查了关于结构标签的 json.Marshal 文档,但我没有发现我尝试处理的数据有任何问题。
我在这里遗漏了一些明显的东西吗? 如何使用结构标签解析包含单引号的 JSON 键?
非常感谢您的任何见解!
【问题讨论】: