首页 >后端开发 >Golang >如何解组未知结构的嵌套 JSON?

如何解组未知结构的嵌套 JSON?

Patricia Arquette
Patricia Arquette原创
2024-11-02 22:48:02890浏览

How to Unmarshal Nested JSON with Unknown Structure?

解组具有未知结构的嵌套 JSON

使用存储具有不同结构的 JSON 文档的数据库时,解组可能具有挑战性在事先不知道确切结构的情况下将数据转换为特定结构。在这里,我们探讨了两种解决此问题的方法。

检查类型

在解组 JSON 数据之前,我们需要确定其类型。这可以使用以下方法之一来实现:

  • 解组到映射[string]接口{}:通过将 json.RawMessage 解组到映射中,我们可以访问“type”字段用于标识数据的类型。这种方法使我们能够避免重复的解组。
  • 使用正则表达式来提取类型字符串:我们可以使用正则表达式来搜索“type”字段并提取其值,然后可以与已知类型进行比较。

解组到特定的Struct

一旦我们确定了 JSON 数据的类型,我们就可以将其解组到相应的结构中。在您的情况下,如果您事先知道可能的类型,则可以创建一系列 if-else 语句或 switch 语句来将数据解组到适当的结构中。

避免重复解组

为了避免重复解组,您可以创建 json.RawMessage 的副本并将其解组到接口第一。一旦知道类型,您就可以将原始 json.RawMessage 解组到确定类型的结构中。

使用正则表达式确定类型

如果您愿意使用正则表达式,可以按照以下步骤操作:

  1. 使用 regexp.MustCompile函数创建与“type”字段匹配的正则表达式。
  2. 使用 regexp.FindStringSubmatch 函数提取类型字符串。
  3. 使用提取的类型字符串确定适当的结构

结论

通过使用上述方法,您可以在不知道其确切结构的情况下有效地解组嵌套 JSON 数据。这使得在使用动态数据源时具有更大的灵活性和便利性。

以上是如何解组未知结构的嵌套 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn