gson到POJO对象,不能正常工作

时间:2010-09-02 07:24:14

标签: android pojo gson

我正在开发一个Android应用程序,并且我访问一个返回JSON的RESTfull Web服务。这个JSON我想把它放在POJO中,但我想我错过了一些东西,因为它不起作用。

重新调整的JSON如下:

[{ “类别名称”: “食品”, “ID”:1},{ “类别名称”: “汽车”, “ID”:2},{ “类别名称”: “家”, “ID”:3 },{ “类别名称”: “工作”, “ID”:4}]

这是在响应变量

中返回的
  String response = client.getResponse();

现在我尝试以下方法:

GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();

JSONObject j;
MainCategories cats = null;

try
{
    j = new JSONObject(response);
    cats = gson.fromJson(j.toString(), MainCategories.class);

}
catch(Exception e)
{
    e.printStackTrace();
}

我得到的错误是:

  

09-02 07:06:47.009:   WARN / System.err的(568):   org.json.JSONException:值   [{ “ID”:1, “类别名称”: “食品”},{ “ID”:2 “类别名称”: “汽车”},{ “ID”:3 “类别名称”: “家”},{ “ID”:4, “类别名称”: “工作”}]   类型org.json.JSONArray不能   转换为JSONObject   09-02 07:06:47.029:   WARN / System.err(568):at   org.json.JSON.typeMismatch(JSON.java:107)

以下是POJO对象 MainCategories.java

public class MainCategories {


 private List<CategoryInfo> category;


 public List<CategoryInfo> getCategory() {
     if (category == null) {
         category = new ArrayList<CategoryInfo>();
     }
     return this.category;
 }

}

CategoryInfo.java

public class CategoryInfo {

 public String categoryName;
 public Integer id;

 public String getCategoryName() {
     return categoryName;
 }


 public void setCategoryName(String value) {
     this.categoryName = ((String) value);
 }

 public Integer getId() {
     return id;
 }

 public void setId(Integer value) {
     this.id = value;
 }

}

要访问网络服务,请使用以下课程:http://lukencode.com/2010/04/27/calling-web-services-in-android-using-httpclient/

请帮助我,因为我现在被困2天,无法弄清楚如何继续。我在这里找到了一些科目,但仍未找到方法。非常感谢你。

1 个答案:

答案 0 :(得分:0)

JSON字符串中的顶级实体是JSONArray而不是JSONObject,而您尝试将其解析为对象。从字符串创建一个数组并使用它。

JSONArray array = new JSONArray(response);