我在解析以下结构时遇到问题,其中JsonData是存储在数据库中的JSON字符串.
type User struct {
Id uint64 `json:"user_id"`
JsonData string `json:"data"`
}
user := &User {
Id: 444,
JsonData: `{"field_a": 73, "field_b": "a string"}`,
}
Run Code Online (Sandbox Code Playgroud)
如果我json.Marshal这个,它将逃避引号,但这将给我JSON:
{
"user_id" : 444,
"data": "{\"field_a\": 73, \"field_b\": \"a string\"}"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉marshaller避免转义JsonData字符串并将其放在引号中,所以它看起来像这样?
{
"user_id" : 444,
"data": {"field_a": 73, "field_b": "a string"}
}
Run Code Online (Sandbox Code Playgroud)
我宁愿不跳过太多的箍,比如创建一个全新的类似用户的对象和/或解组/重新编组字符串等.
Ain*_*r-G 10
看起来像RawMessage就是你要找的:
RawMessage是一个原始编码的JSON对象.它实现了Marshaler和Unmarshaler,可用于延迟JSON解码或预先计算JSON编码.
游乐场:http://play.golang.org/p/MFNQlISy-o.
归档时间: |
|
查看次数: |
8206 次 |
最近记录: |