将 JSON 值展平为键

Flatten JSON value as key

我尝试将 JSON 转换为以下形式:

{
  "name" : "John",
  "value" : [ "age" : "25"]
}

...进入:

{
  "John": ["age" : "25"]
}

但是我找不到办法。有什么建议吗?

如果你想要年龄数组,那么使用

{
  "name": "John",
  "value": [
    {
      "age": "25"
    }
  ]
}

否则使用(更符合逻辑)

{
  "name": "John",
  "value": {
    "age": "25"
  }
}

一个解决方案可能如下所示:

parsed := map[string]interface{}{}
_ = json.Unmarshal([]byte(unparsed), &parsed)
data, _ := json.Marshal(map[string]interface{}{
    parsed["name"].(string): parsed["value"],
})

查看此 Playground 以查看代码是否正常工作:https://play.golang.org/p/1JFxBE6dFzp