java - 有随机键名时如何用JAVA解析JSON

标签 java json

当我不知道键的名称时,如何将一些 JSON 转换为 POJO?

这是我的 POJO:

public class Summoner {

    private Details summonerDetails;

    public Details getSummonerDetails() {
        return summonerDetails;
    }

    public void setSummonerDetails(Details summonerDetails) {
        this.summonerDetails = summonerDetails;
    }

}

Details 类有 id、name 等变量 -> 这里没有问题

这是我的主类中尝试将 JSON 映射到 POJO 的行:

Summoner test = new ObjectMapper().readValue(json, Summoner.class);

这是我收到的 JSON 响应示例:

{
   "randomName":{
      "id":22600348,
      "name":"Ateuzz",
      "profileIconId":546,
      "summonerLevel":30,
      "revisionDate":1378316614000
   }
}

如果我的 POJO Details 成员变量名称是“randomName”,上面的代码将起作用。但是当我收到与“randomName”不同的名称的响应时,它不会。如何让我的代码适用于随机名称?

我在用 jackson

很抱歉,我不能把我的问题说得更清楚一点。

最佳答案

我有解决方案,不仅使用 jackson API,还使用 ​​org.json API还。

String str = "{\"randomName\":{\"id\":22600348,\"name\":\"Ateuzz\",\"profileIconId\":546,\"summonerLevel\":30,\"revisionDate\":1378316614000}}";
JSONObject json = new JSONObject(str);
Iterator<?> keys = json.keys();
while(keys.hasNext())
{
    String key = (String)keys.next();
    Details test = new ObjectMapper().readValue(json.getJSONObject(key).toString(), Details.class);

}  

在这里,我使用另一个 JAVA Json API 将您的字符串转换为 jsonObject,然后迭代它以获取您的第一个键值并将其映射到您的类详细信息。

我假设您的 json 格式与您在问题中提到的相同。

希望这对你有所帮助。

关于java - 有随机键名时如何用JAVA解析JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286528/

相关文章:

java - 意外的 Vertx 部署实例行为

ruby-on-rails - 使用 Active Record 搜索嵌套/多级 Postgres JSON 类型

json - 在 http 响应中将任意字符串编码为 JSON

javascript - 我如何使用 MarkerWithLabel 中的 labelContent 访问值,它们之间有空间

java - 如何在 native 查询中使用 sql 函数

如果不启用 "show console",Java Web Start 不会启动我的 .jar

java - 如何检查 boolean 值是否为空?

java - 坚持特定的修订号

java - 我应该如何读取带有编号对象的 JSON?

JSON 导入 Excel