2014-11-05 52 views
-1

我想将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; 

    } 
} 

所以我在想什么摹这里..

+0

尝试在'GPlusFriend'类中将'Name'更改为'name'。 – Rohan 2014-11-05 12:01:03

+0

或者,将'@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

回答

1

应使用GSON时要

String name; 

,而不是

String Name; 

您的JSON关键是小写字母 “名” ,变量名是大小写敏感的

+0

超级.......! tnx – kavuru 2014-11-05 12:04:34

+0

它给...你可以在4分钟内接受答案。一旦它允许就会做。 – kavuru 2014-11-05 12:06:18