首页  >  文章  >  后端开发  >  如何在不知道其结构的情况下解组嵌套 JSON?

如何在不知道其结构的情况下解组嵌套 JSON?

Barbara Streisand
Barbara Streisand原创
2024-11-04 12:01:29134浏览

How to Unmarshal Nested JSON without Knowing its Structure?

在不知道结构的情况下解组嵌套 JSON

当使用包含具有不同架构的 JSON 文档的键值存储时,很难将 JSON 数据解组为特定结构,而无需事先了解其结构。本文探讨了解决此问题的方法并提出了解决方案。

方法 1:解组到接口

要处理具有未知结构的 JSON 文档,您可以将它们解组为接口类型,例如map[string]interface{}。这允许您以字典的形式访问底层数据,而无需定义特定的结构。

通过将顶级 foo 命名空间解组到 map[string]*json.RawMessage,您可以检索嵌套的 JSON数据。但是,您仍然需要确定 foo 命名空间中数据的类型,才能将其正确解组到结构中。

方法 2:正则表达式类型提取

另一种方法方法是从JSON数据中提取类型字符串,并使用正则表达式来确定结构体类型。一旦知道类型,您就可以将 json.RawMessage 解组到适当的结构中。

重复解组

是否需要考虑重复解组取决于性能要求您的申请。如果速度至关重要,则直接解组到特定结构而不是使用中间接口可能会更有效。然而,对于小数据集或偶尔使用,性能损失可能并不显着。

更新

根据提供的更新,提出了两种可能的解决方案:

a) 复制并解组

  • 制作 json.RawMessage 的副本。
  • 将副本解组到接口中。
  • 一旦知道类型,将原始 json.RawMessage 解组到适当的结构中。

b) 正则表达式和解组

  • 使用正则表达式来提取类型字符串。
  • 根据提取的类型字符串以编程方式创建结构类型。
  • 将 json.RawMessage 解组到新创建的结构中。

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

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