用未知结构解码 JSON
在编程领域,JSON(JavaScript 对象表示法)通常用作表示数据的一种手段软件应用程序。然而,当遇到结构不熟悉的 JSON 时,提取特定信息可能会带来挑战。考虑以下场景:
您需要像这样处理 JSON 字符串:
{ "votes": { "option_A": "3" } }
您的目标是通过包含“count”键来扩充此 JSON,从而产生以下输出:
{ "votes": { "option_A": "3" }, "count": "1" }
挑战来自于初始 JSON 的未知结构。传统方法,例如使用具有特定类型结构的 json.Unmarshal 函数,变得不适用。
解决方案:Unmarshal 到 Map
为了克服这个障碍,我们可以利用 Go 映射的灵活性。以下代码片段演示了如何将 JSON 解组到 map[string]interface{}:
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } // Modify the map by adding the "count" key raw["count"] = 1 // Marshal the modified map back to JSON out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
通过将 JSON 解组到映射中,我们有效地创建了一个与类型无关的数据结构,可以容纳任何输入。它允许我们动态地访问和修改 JSON 内容,而不依赖于预定义的类型。
上述代码的最终输出如下:
{ "votes": { "option_A": "3" }, "count": "1" }
这种方法提供了一种方便灵活的方式用于解码未知结构的 JSON 的解决方案,使开发人员能够高效地提取和操作数据。
以上是如何在 Go 中解码未知结构的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!