在Go中解组动态json内容

时间:2017-07-14 14:38:13

标签: json go dynamic struct

我有一个动态的json对象,我想在我的Go应用程序中解组。问题是json的某些部分是动态命名的,所以我不知道在struc类型的json标记中放入什么。为了说明我的问题,请看这个游乐场:https://play.golang.org/p/q8J0VVO7uj

正如您所看到的,s1可以完美地解组,因为结构类型确实具有标记description。但s2无法解组。

所以我的问题是:我该如何解决这个问题?我可以在这里使用接口吗?

1 个答案:

答案 0 :(得分:1)

使用地图作为动态键:

type ElvisEvent struct {
    Timestamp int64  `json:"timestamp"`
    Type      string `json:"type"`
    AssetID   string `json:"assetId"`
    Metadata  struct {
    } `json:"metadata"`

    ChangedMetadata map[string]struct {
        OldValue interface{} `json:"oldValue"`
        NewValue interface{} `json:"newValue"`
    } `json:"changedMetadata"`
}

playground example