JSONObject是FastJson提供的對象,以key-value的格式存儲資料。可以通過其封裝的get方法擷取key對應的value值。
1、下面的方法是把json字元串轉成JsonObject對象,這樣就能通過操作JsonObject對象來擷取json串中自己想擷取的資料。
// 将字元串jsonStr 轉成 JsonObject。
JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class);
2、接下來擷取jsonObject 的内容, 如果要擷取的内容是個數組 就要用getJsonArray()方法進行擷取,并且用JsonArray 對象來接收。
JsonArray array = jsonObject.getJSONArray("Data");
3、我們可以周遊擷取數組中的值,JsonElement 代表是JsonObject的一個元素。它可以是數組,可以是基本類型,也可以是JsonObject。
for (JsonElement jsonElement : array) {
if (jsonElement != null) {
*// 繼續擷取數組中key為"_source"的值,對象仍是JsonObject類型*
JsonObject jsonObject1=jsonElement.getAsJsonObject().get("_source").getAsJsonObject();
*// 定義一個實體對象*
MaterialInfo material = new MaterialInfo();
*// 對象是String類型*
if (jsonObject1.has("app_key")) {
material.setAppKey(jsonObject1.get("app_key").getAsString());
}
*// 對象是int類型*
if (jsonObject1.has("mapp_type")) {
material.setMappType(jsonObject1.get("mapp_type").getAsInt());
}
*// 對象是Bete類型*
if (jsonObject1.has("image_style")) {
material.setImageStyle(jsonObject1.get("image_style").getAsByte());
}
*// 對象是Long類型*
if (jsonObject1.has("create_time")) {
material.setCreateTime(jsonObject1.get("create_time").getAsLong());
}