我在解析以下结构时遇到问题,其中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"}`,}
如果我json.Marshal这个,它将逃避引号,但这将给我JSON:
{ "user_id" : 444,"data": "{\"field_a\": 73,\"field_b\": \"a string\"}" }
有没有办法让marshaller避免转义JsonData字符串并将其放在引号中,所以它看起来像这样?
{ "user_id" : 444,"data": {"field_a": 73,"field_b": "a string"} }
我宁愿不跳过太多的箍,比如创建一个全新的类似用户的对象和/或解组/重新编组字符串等.
解决方法
好像
RawMessage正在寻找:
RawMessage is a raw encoded JSON object. It implements Marshaler and Unmarshaler and can be used to delay JSON decoding or precompute a JSON encoding.