用gson反序列化java中的json
我很难用gson在java中反序列化json 我有以下json:用gson反序列化java中的json,java,android,json,gson,Java,Android,Json,Gson,我很难用gson在java中反序列化json 我有以下json: {"races":[ {"id":1,"mask":1,"side":"alliance","name":"Human"}, {"id":2,"mask":2,"side":"horde","name":"Orc"}, {"id":3,"mask":4,"side":"alliance","name":"Dwarf"}]} 我现在拥有的java代码是: StringRequest stringRequest = new Stri
{"races":[
{"id":1,"mask":1,"side":"alliance","name":"Human"},
{"id":2,"mask":2,"side":"horde","name":"Orc"},
{"id":3,"mask":4,"side":"alliance","name":"Dwarf"}]}
我现在拥有的java代码是:
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Gson gson = new Gson();
Type type = new TypeToken<List<WoWDetails>>(){}.getType();
List<WoWRaces> races = gson.fromJson(response, type);
for (WoWRaces race : races){
if(raceID.equals(race.id)) {
raceName = race.name;
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
errorMSG = (TextView) findViewById(R.id. textView5);
errorMSG.setText("That didn't work! URL: \n"+error);
errorMSG.setVisibility(View.VISIBLE);
}
});
它给了我以下错误:
应为BEGIN\u数组,但为BEGIN\u对象
我已经搜索并访问了多个问题,但我似乎无法找到答案。我需要的数据是绑定到它的id和名称
提前感谢您如果您正在使用gson库,请尝试此功能
Gson gson = new Gson();
MainResponse mainResponse = gson.fromJson(response, MainResponse.class);
List<Race> races = mainResponse.getRaces();
for (Race race : races) {
Log.e("TEST","Race id : " + race.getId());
Log.e("TEST","Race Name : " + race.getName());
}
1.创建
RacesResponse
类别为:
public class RacesResponse {
@SerializedName("races")
public List<WowRaces> list;
}
公共级别比赛响应{
@序列化名称(“种族”)
公开名单;
}
2.将代码更改为:
RacesResponse racesResponse = gson.fromJson(response, RacesResponse.class);
List<WowRaces> races = racesResponse.list;
RacesResponse RacesResponse=gson.fromJson(response,RacesResponse.class);
列表种族=种族响应。列表;
您可以将json字符串放入应用程序并复制所有类,然后在新的Gson.fromJson(jsonString,Example.class)中使用main class to
在url中选择此选项
是否要解析JSON?请使用gson库。准确描述你的问题是很容易的:你说有问题,但不要说是什么问题。可能的重复是正确的。SO得到的错误“预期的BEGIN_数组但为BEGIN_对象”,是因为通过TypeToken,他告诉Gson预期一个数组,但JSON响应是一个对象(包含一个数组)。这个答案回答正确。我也会试试这个,谢谢你花时间来帮助我!我还不能提高投票率,我只是做了这个账户,我会尽我所能的!是..创建ItemResponse和Item类,然后您可以执行与之前相同的操作。
public class Race {
@SerializedName("id")
@Expose
private int id;
@SerializedName("mask")
@Expose
private int mask;
@SerializedName("side")
@Expose
private String side;
@SerializedName("name")
@Expose
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getMask() {
return mask;
}
public void setMask(int mask) {
this.mask = mask;
}
public String getSide() {
return side;
}
public void setSide(String side) {
this.side = side;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class RacesResponse {
@SerializedName("races")
public List<WowRaces> list;
}
RacesResponse racesResponse = gson.fromJson(response, RacesResponse.class);
List<WowRaces> races = racesResponse.list;