go语言之未知结构体反序列化
📝 技巧:解码 JSON 到 map[string]interface{}
讲解:
当处理来自外部 API 或其他来源的 JSON 数据时,你可能并不总是事先知道其确切的结构。或者,你可能只对 JSON 数据中的一部分字段感兴趣,而不想为了完整地映射整个 JSON 结构而定义复杂的 Go 结构体。
在这种情况下,你可以将 JSON 数据解码到一个通用的 Go 类型:map[string]interface{}
。
map[string]interface{}
是一个键值对的集合,其中键是字符串(对应 JSON 对象的键),值可以是任何类型 (interface{}
)。这使得你可以灵活地访问 JSON 数据中的各种类型的值(字符串、数字、布尔值、嵌套的对象或数组)。
使用场景:
- 处理结构不固定的 JSON 响应。
- 只需要访问 JSON 数据中的特定字段。
- 在完全了解 JSON 结构之前探索数据。
代码示例:
1 | package main |
输出:
1 | Decoded generic data: map[details:map[author:AI Assistant created_at:2025-05-24T10:00:00Z] name:Dynamic Object tags:[dynamic json go] version:1] |
总结:
使用 json.Unmarshal
将 JSON 数据解码到 map[string]interface{}
提供了一种灵活的方式来处理结构未知的 JSON 数据。你需要通过类型断言来使用 map 中的值。