2013-07-27 235 views
2

如何使用GSON庫解析此JSON。使用GSON解析JSON

[ 
{ 
    "id": "1", 
    "title": "None" 
}, 
{ 
    "id": "2", 
    "title": "Burlesque" 
}, 
{ 
    "id": "3", 
    "title": "Emo" 
}, 
{ 
    "id": "4", 
    "title": "Goth" 
} 
] 

我試圖做到這一點

public class EventEntity{ 

    @SerializedName("id") 
    public String id; 

    @SerializedName("title") 
    public String title; 



    public String get_id() { 
     return this.id; 
    } 

    public String get_title() { 
     return this.title; 
    } 
} 

JSONArray jArr = new JSONArray(result); 
      //JSONObject jObj = new JSONObject(result); 
      Log.d("GetEventTypes", jArr.toString());     

      EventEntity[] enums = gson.fromJson(result, EventEntity[].class); 
      for(int x = 0; x < enums.length; x++){     
       String id = enums[x].get_id().toString(); 
      } 

到目前爲止,我可以用get_id方法得到的ID,但我似乎無法將其分配給字符串ID。有關這方面的正確方法是什麼?

+0

通常get方法沒有下劃線......它應該是getId()/ getTitle()。你是什​​麼意思「使用get_id方法得到id,但我似乎不能分配」。爲什麼不?您是否嘗試過調試或打印ID? – peshkira

+0

這是一個例子http://thegeekyland.blogspot.com/2015/11/serializing-and-deserializing-json-from.html – Arlind

回答

4

您的類EventEntity是正確的,但爲了解析JSON,你最好做這樣的事情:

Gson gson = new Gson(); 
Type listType = new TypeToken<List<EventEntity>>() {}.getType(); 
List<EventEntity> data = gson.fromJson(result, listType); 

然後,你必須與你的所有EventEntity對象List到變量data ,所以你可以只訪問這些值:

String id = data.get(i).get_id(); 
String title = data.get(i).get_title(); 
+0

由於某種原因,我可以得到的ID,但不是標題 – GrayStatic

+0

@GrayStatic,這真的很奇怪...你是否在分析之前檢查JSON到'result'是否與你描述的完全一樣,並且有一個完全叫做'「title」'的字段? – MikO

+0

是的,它是由get方法返回的,但沒有傳遞給字符串。同樣的問題,我早些時候,但現在的id工作正常。 – GrayStatic