使用可变结构解码 JSON
使用 JSON 数据时,处理变化的数据结构可能具有挑战性。在这种情况下,使用固定结构的传统方法(例如 json.Unmarshal())变得不切实际。以下是针对此场景的解决方案:
解决方案:解组到 map[string]interface{}
我们可以将 JSON 解组为通用 map[string]interface{} 类型。这使我们能够处理具有不同结构的 JSON 数据。
考虑以下 JSON:
{ "votes": { "option_A": "3" } }
要向此 JSON 添加“count”键,我们可以按如下方式对其进行解组:
package main import ( "encoding/json" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } println(string(out)) }
这种方法可以让我们轻松修改 JSON 结构,而无需绑定到固定的数据模型。 map[string]interface{} 类型提供了处理动态 JSON 结构的灵活性。
以上是如何在 Go 中解码具有可变结构的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!