json – 防止Marshal在STR字符串字段上转义引号

前端之家收集整理的这篇文章主要介绍了json – 防止Marshal在STR字符串字段上转义引号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在解析以下结构时遇到问题,其中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.

游乐场:http://play.golang.org/p/MFNQlISy-o.

猜你在找的JavaScript相关文章