2016-11-29 94 views
0

如何將以下類型的Json數組轉換爲android中的[「Activity Based」]:並使用getter setter方法存儲數據。如何創建POJO類以及數組爲空時的處理方式。概念。我嘗試了以下方法。請指導我解決此問題。如何在android中沒有JSON對象值的情況下獲取JSON數組值?可能嗎?

API

"postlist": [ 
       { 
       "posts": { 
        "pm_post_id": "4647", 
       }, 
       "tags_name": [ 
        "Activity Based" 
       ], 
       "images_count": 0, 
       "images": [], 
       "post_user": [ 
        { 
        "first_name": "Michelle", 
        "last_name": "Smith", 
        "profile_pic": "profess_sw_engg.jpg" 
        } 
       ], 
       "is_encourage_user": true, 
       "encourage_feed_id": "992" 
       }, 
       { 
       "posts": { 
       "pm_post_id": "4647", 
       }, 
       "tags_name": [], 
       "images_count": 2, 
       "images": [ 
        { 
        "gallery_id": "5549", 
        "name": "IMG_20161012_1832491.jpg", 

        }, 
        { 
        "gallery_id": "5550", 
        "name": "IMG_20161012_1832441.jpg", 

        } 
       ], 
       "post_user": [ 
        { 
        "first_name": "Michelle", 
        "last_name": "Smith", 
        "profile_pic": "profess_sw_engg.jpg" 
        } 
       ], 
       "is_encourage_user": true, 
       "encourage_feed_id": "993" 
       } 
    ] 

在Java中,我使用下面的代碼。

try { 
       JSONArray tagNameArr = tempPostObject.getJSONArray("tags_name"); 
       for(int iloop=0;i<tagNameArr.length();iloop++) 
       { 
        String street = tagNameArr.getString(iloop); 
        Log.i("..........",""+street); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
+0

你應該能夠使用'gson'(https://github.com/google/gson)要做到這一點 –

+0

提供您的JSON –

+0

,我將它添加到質疑Mr.Arpit –

回答

1

試試這個讓tags_name JSONArray的價值。

ArrayList<String> temp = new ArrayList<String>(); 
JSONArray tagName= jsonResponse.getJSONArray("tags_name"); 
for(int j=0;j<tagName.length();j++){ 
    temp.add(tagName.getString(j)); 
} 
+0

它將如何傳遞給setter方法? –

+0

@MohanRajS temp是一個數組列表,所以根據arraylist的位置,你可以在你的setter中設置它。 –

+0

非常感謝你的兄弟。我清除了這個問題。完美的工作 –

1

使用jsonschema2pojo.org服務和Gson轉換器(來自Google的lib)。選擇網站上的Gson轉換器。

+0

我在gson seralization中遇到問題,當我的數組爲空時它將創建空指針異常,所以我回退到舊的方法。 –

+0

現在我用我的問題更新了API,請給出一些建議bro,我很無奈。感謝您寶貴的時間。 –

1

您可以使用GSON

Gson gson = new GsonBuilder().serializeNulls().create(); 
RestaurantLoginResponseClass restaurantLoginResponse = gson.fromJson(loginResponseJsonString, RestaurantLoginResponseClass.class); 

添加依賴於app.gradle

compile 'com.google.code.gson:gson:2.6.2' 
+0

我在gson seralization中遇到問題,當我的數組爲空時它將創建空指針異常,所以我回退到舊的方法。 –

+0

您可以檢查數組長度或檢查對象是否爲空 –

1

@MohanRaj,你爲什麼會來解析吧! ,目前尚不清楚,如果你想獲得的值,並在Java對象保留或保存在文件系統中,你可以使用:

GS

Gson gson = new Gson(); 
Staff obj = gson.fromJson(jsonInString, Staff.class); 

,如果你有內部對象的列表您的JSON

你可以在你的員工類的東西,如創建一個列表:

@SerializedName("hits") 
private List<Car> cars = new ArrayList<Car>(); 

GSON可以理解並解析進入的列表這些對象。

你可以從熟悉的JSON獲得POJO到Java POJO工具: http://www.jsonschema2pojo.org/ ,您可以查看更多信息https://sites.google.com/site/gson/gson-user-guide http://www.java2blog.com/2013/11/gson-example-read-and-write-json.html

+0

Mr.Ahemed有一段時間我的數組可能是空的,那時序列化不會幫助我。拋出空指針異常。 –

+0

Mohan,你的意思是在Json響應本身? ,可能在有時不包含數組? –

+0

兄弟我有空數組值「tags_name」:[]這樣的數組。 –

相關問題