2013-07-27 196 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