【问题标题】:How can I parse a JSON object with unknown keys?如何解析具有未知键的 JSON 对象?
【发布时间】:2014-10-23 10:23:58
【问题描述】:

我目前正在从看起来像这样的第三方 API 获取 json

{
    success: true,
    data: {
        acdc-key1: [{
            id: acdc-key1,
            othervar: stuff,
            foo: bar
        }],
        r2d2-key2: [{
            id: r2d2-key2,
            othervar: thing,
            foo: mu
        }]
    }
}

等等。

基本上它是一个对象,它有一个对象,它有键,这些键有对象数组。

我正在使用映射器将来自 API 的响应转换为 JAva 对象,但我不确定如何构造我的类以便正确映射它。

主要问题是长长的键数组总是会改变而不是设置字段。

【问题讨论】:

    标签: java json


    【解决方案1】:

    您可以使用 Jackson 并用它创建一个 JSON 解析树。这将是一组表示 JSON 的 java 对象,但作为对象和属性的树,而不是 POJO。

    然后您可以遍历树以查找您特别感兴趣的属性。您甚至可以创建一个包装类,其中包含您感兴趣的属性的 getter 和 setter,但在内部使用对象树来访问值在原始 JSON 中。

    这里似乎有一个相关的问题-How do you tree walk JSON via Jackson 2 JsonNode?

    【讨论】:

    • 谢谢,仍然缺少一条信息。由于我不提前知道它们的值,如何使用 JsonNode.get/.path 对对象键进行交互?
    • 如果你知道你在找什么,那么你可以在树周围搜索它,即使你不知道确切的结构......如果你不知道会是什么在树中,那么您如何定义您的程序是否有效?
    • Nevermind 在编辑问题时回答了我自己的问题。我在执行 JsonNode.get("data") 后使用 for (JSonNode entry: data) 进行交互
    【解决方案2】:

    您始终可以使用例如 Gson(谷歌库)从任何 json 获取 Map 对象。 并从该地图中仅获取您确定存在的那些键...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2016-08-13
      • 1970-01-01
      相关资源
      最近更新 更多