在Java中解析Json对象中的动态名称的最佳方法是什么?

时间:2018-02-13 09:03:36

标签: java json dynamic fasterxml

如果可能的话,我更愿意使用com.fasterxml.jackson。 我正在寻找一种解析json的方法:

{
   "availability":{
      "48":{              //this is dynamic (in next response that number can be different, like 1023)
         "2018-02-08":{   //this is dynamic
            "temp":null
         },
         "2018-02-09":{   //this is dynamic
            "temp":null
         }
      },
      "49":{              //this is dynamic
         "2018-02-08":{   //this is dynamic
            "temp":null
         },
         "2018-02-09":{   //this is dynamic
            "temp":null
         }
      }
   }
}

2 个答案:

答案 0 :(得分:0)

您可以通过谷歌使用GSON:

        import com.google.gson.Gson;
        import com.google.gson.JsonArray;
        import com.google.gson.JsonElement;

        HttpClient httpClient = httpClientIgnoreCertificates();
        HttpGet get = new HttpGet(uri);
        HttpResponse response;
        String responseEntity = null;
        try {
             response = httpClient.execute(get);
             responseEntity = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
        } catch (IOException e) {
                    e.printStackTrace();
        }
        JsonArray jsonObjects = new Gson().fromJson(responseEntity, 
        JsonArray.class);
        JsonArray items =
   jsonObjects.get(0).getAsJsonObject().get("availability").getAsJsonArray();

而且你可以用你的jsonArray做行动..

答案 1 :(得分:0)

在fastxml Jackson中有两种方法可以做到这一点。

  1. 尝试使用JSON树模型
  2. Api JsonNode负责将输入String转换为可解析的Json对象。您可以在以下链接Baeldung's Site中找到使用它们的教程,API详细信息位于this link

    我试过在这里运行你的例子,PFB调试截图...

    DebugScreenshot from IntelliJIDEA

    1. 尝试此Dzone Link
    2. 中详述的Json对象模型

      在班级添加注释@JsonInclude(JsonInclude.Include.NON_NULL) 这将排除在对相应域对象进行非编组时为null的任何元素