天天看點

擷取JSONObject中的元素

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());
         }