Unmarshal Escaped JSON字符串

时间:2016-02-19 20:10:45

标签: json go

我正在尝试从一个API中解组一个JSON对象,该API在JSON内部有一个字符串,它本身就是JSON,但是它作为一个字符串被转义。它看起来像这样:

{
  "duration": "126.61ms",
  "startTime": "2016-02-19T20:01:17.884Z",
  "total": 123,
  "content": [
  {
    "dateCreated": "2016-02-19T20:01:09.181Z",
    "lastUpdated": "2016-02-19T20:01:09.181Z",
    "name": "name",
    "stats": "{\"id\":545,\"lastUpdated\":\"2015-01-09T19:16:04.535Z\",\"all\":{\"runs\":{\"count\":123}"
  }
}

我正在尝试将其解组为这样的结构:

type RunStatus struct {
    Duration string `json:"duration"`
    StartTime time.Time `json:"startTime"`
    Total int `json:"total"`
    Content []struct {
        DateCreated time.Time `json:"dateCreated"`
        LastUpdated time.Time `json:"lastUpdated"`
        name string `json:"name"`
        stats string `json:"stats"`
    } `json:"content"`
}

将转义的JSON对象转换为stats结构而不是在字符串中的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

分两个阶段完成。首先使用stats字段作为字符串解组外部对象,然后将该字符串解组到stats结构中。你可以做一个UnmarshalJSON的自定义实现,所以这是混淆的,但无论哪种方式,我所知道的唯一合理的方法是分别做两个。