gson 到 POJO 对象,无法正常工作
我正在开发一个 Android 应用程序,并访问返回 JSON 的 RESTfull Web 服务。我想将这个 JSON 放入 POJO 中,但我认为我遗漏了一些东西,因为它不起作用。
返回的 JSON 如下:
[{"CategoryName":"Food","Id":1},{"CategoryName":"Car","Id":2},{"CategoryName":"House"," Id":3},{"CategoryName":"Work","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: 警告/系统错误(568): org.json.JSONException:值 [{"Id":1,"CategoryName":"食品"},{"Id":2,"CategoryName":"汽车"},{"Id":3,"CategoryName":"房子"},{ "Id":4,"CategoryName":"工作"}] org.json.JSONArray 类型不能是 转换为 JSONObject 09-02 07:06:47.029: 警告/系统错误(568):位于 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;
}
}
要访问 Web 服务,我使用以下类: http://lukencode.com/2010/04/27/calling-web-services-in-android-using-httpclient/
请帮助我,因为我被困了 2 天现在不知道如何继续。我在这里找到了一些主题,但仍然没有找到解决方法。非常感谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您尝试将其解析为对象时,JSON 字符串中的顶级实体是 JSONArray 而不是 JSONObject。从字符串创建一个数组并使用它。
Top level entity in your JSON string is JSONArray not JSONObject, while you're trying to parse it as object. Create an array from the string and use that.