当我不知道键的名称时,如何将一些 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/