我想解析JSON数组,并使用gson。首先,我可以记录JSON输出,服务器可以清楚地响应客户端。
下面是我的JSON输出:
[
{
id : '1',
title: 'sample title',
....
},
{
id : '2',
title: 'sample title',
....
},
...
]
我尝试了这个结构来解析. A类,它依赖于单个array
和ArrayList
来解析所有的JSONArray。
public class PostEntity {
private ArrayList<Post> postList = new ArrayList<Post>();
public List<Post> getPostList() {
return postList;
}
public void setPostList(List<Post> postList) {
this.postList = (ArrayList<Post>)postList;
}
}
帖子类:
public class Post {
private String id;
private String title;
/* getters & setters */
}
当我尝试使用gson时,没有错误、警告和日志:
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
PostEntity postEnt;
JSONObject jsonObj = new JSONObject(jsonOutput);
postEnt = gson.fromJson(jsonObj.toString(), PostEntity.class);
Log.d("postLog", postEnt.getPostList().get(0).getId());
怎么了,我怎么解决?
9条答案
按热度按时间ki0zmccv1#
你可以直接解析
JSONArray
,不需要再用PostEntity
Package 你的Post
类,也不需要新的JSONObject().toString()
:希望能有所帮助。
q3qa4bjr2#
我一直在寻找一种以更通用的方式解析对象数组的方法;以下是我贡献:
CollectionDeserializer.java
:JSONParsingTest.java
:World.java
:h9a6wy2h3#
在对象数组中转换
转换为帖子类型
要将其读取为对象列表,可以使用TypeToken
oug3syen4#
b4wnujal5#
这篇文章的一些答案是有效的,但是使用TypeToken,Gson库为您的应用程序生成一个具有不真实类型的Tree对象。
要得到它我必须读取数组并逐个转换数组中的对象。当然这种方法不是最快的,如果数组太大,我不建议使用它,但它对我很有效。
需要在项目中包含Json库,如果是在Android上开发,则包含:
envsm3lx6#
您可以在Kotlin中使用以下代码轻松地完成此操作:
基本上,您只需要提供
YourClass
对象的Array
。zzlelutf7#
检查此输出的简易代码
htzpubme8#
在Kotlin:
pdkcd3nj9#
您可以在不使用Type对象情况下获取列表值。
我已经测试过了,它正在工作。