我想将json格式(来自rest webservice的arraylist响应)转换为相应的java arraylist。Gson没有从json字符串格式化一个变量
令人惊讶的是,3个变量中只有2个被格式化为对象,3个变量被设置为null。
下面是字符串格式的json响应。
[{"points":"20","shares":"54","name":"Krishna"},{"points":"18","shares":"47","name":"Bhima"}]
我想转换与下面的代码的ArrayList:
ArrayList<GplusFriend> gp_list;
Gson gson = new Gson();
gp_list = gson.fromJson(result, new TypeToken<List<GplusFriend>>(){}.getType());
Iterator itr = gp_list.iterator();
GplusFriend gf =null;
while(itr.hasNext()){
gf= (GplusFriend) itr.next();
Log.d("Restcall", "Name :"+gf.getName());
Log.d("Restcall", "points :"+gf.getPoints());
Log.d("Restcall", "shares :"+gf.getShares());
}
但我得到的日志为:
Name :null
points :20
shares :54
Name :null
points :18
shares :47
这是GPlusFriend的类定义:
public class GplusFriend {
String Name;
String points;
String shares;
public String getShares() {
return shares;
}
public void setShares(String shares) {
this.shares = shares;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPoints() {
return points;
}
public void setPoints(String points) {
this.points = points;
}
public GplusFriend(){
super();
}
public GplusFriend(String Name,String points,String shares){
super();
this.shares=shares;
this.Name = Name;
this.points = points;
}
@Override
public String toString(){
return this.Name + " "+this.points+" "+this.shares;
}
}
所以我在想什么摹这里..
尝试在'GPlusFriend'类中将'Name'更改为'name'。 – Rohan 2014-11-05 12:01:03
或者,将'@SerializedName(“name”)'添加到'Name'字段。这告诉GSON忽略字段名称并使用您指定的任何内容。还有另一种方法,请参阅https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field-Naming-Support – zapl 2014-11-05 12:06:02