[英]How to parse JSONArray to ArrayList<Object> from JSONObject , using GSON lib?
假设这是我的JSON结构。
{
"books": [
{
"book": {
"description": "Drama",
"date_of_released": "02 September 2015",
"view_node": "read more >"
}
},
{
"book": {
"description": "Horror",
"date_of_released": "02 September 2015",
"view_node": "read more >"
}
}
],
"pager": {
"pages": 1,
"page": 0,
"count": 2,
"limit": 2
}
}
这是我的上课课。
public class Book {
String description;
String date_of_released;
String view_node;
}
那是传呼机类。
public class Pager {
int pages;
int page;
int count;
int limit;
}
那是我做的,因为我认为我需要一个用于解析JSON的类。 (不确定是否确实需要)
public class BookInfo {
ArrayList<Book> books;
Pager pager;
}
执行后,它完美地适用于寻呼机。
但是,即使JSON的大小为2,ArrayList对象的各个字段也都为null 。 为什么?
用这个
public class BookWrapper {
Book book;
}
public class BookInfo {
ArrayList<BookWrapper> books;
Pager pager;
}
或重新格式化json
{
"books": [
{
"description": "Drama",
"date_of_released": "02 September 2015",
"view_node": "read more >"
},
{
"description": "Horror",
"date_of_released": "02 September 2015",
"view_node": "read more >"
}
],
"pager": {
"pages": 1,
"page": 0,
"count": 2,
"limit": 2
}
}
首先,您的json无效,要检查您的json请转到此链接jsonlint.com并使json的POJO类访问此链接http://www.jsonschema2pojo.org/
并且您的有效json应该是
{
"books": [
{
"book": {
"description": "Drama",
"date_of_released": "02 September 2015",
"view_node": "read more >"
}
},
{
"book": {
"description": "Horror",
"date_of_released": "02 September 2015",
"view_node": "read more >"
}
}
],
"pager": {
"pages": 1,
"page": 0,
"count": 2,
"limit": 2
}
}
它应该在这之后工作!
尝试这个 -
InnerBook.java
public class InnerBook {
private String description;
private String date_of_released;
private String view_node;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDate_of_released() {
return date_of_released;
}
public void setDate_of_released(String date_of_released) {
this.date_of_released = date_of_released;
}
public String getView_node() {
return view_node;
}
public void setView_node(String view_node) {
this.view_node = view_node;
}
@Override
public String toString() {
return "InnerBook [description=" + description + ", date_of_released="
+ date_of_released + ", view_node=" + view_node + "]";
}
}
Book.java
public class Book {
private InnerBook book;
public InnerBook getBook() {
return book;
}
public void setBook(InnerBook book) {
this.book = book;
}
@Override
public String toString() {
return "Book [book=" + book + "]";
}
}
Pager.java
public class Pager {
private Long pages;
private Long page;
private Long count;
private Long limit;
public Long getPages() {
return pages;
}
public void setPages(Long pages) {
this.pages = pages;
}
public Long getPage() {
return page;
}
public void setPage(Long page) {
this.page = page;
}
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
public Long getLimit() {
return limit;
}
public void setLimit(Long limit) {
this.limit = limit;
}
@Override
public String toString() {
return "Pager [pages=" + pages + ", page=" + page + ", count=" + count
+ ", limit=" + limit + "]";
}
}
Holder.java
import java.util.List;
public class Holder {
private List<Book> books;
private Pager pager;
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
public Pager getPager() {
return pager;
}
public void setPager(Pager pager) {
this.pager = pager;
}
@Override
public String toString() {
return "Holder [books=" + books + ", pager=" + pager + "]";
}
}
Main.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.testgson.beans.Holder;
public class Main {
private static Gson gson;
static {
gson = new GsonBuilder().create();
}
public static void main(String[] args) {
String j = "{\"books\":[{\"book\":{\"description\":\"Drama\",\"date_of_released\":\"02 September 2015\",\"view_node\":\"read more >\"}},{\"book\":{\"description\":\"Horror\",\"date_of_released\":\"02 September 2015\",\"view_node\":\"read more >\"}}],\"pager\":{\"pages\":1,\"page\":0,\"count\":2,\"limit\":2}}";
Holder r = gson.fromJson(j, Holder.class);
System.out.println(r);
}
}
结果
Holder [books=[Book [book=InnerBook [description=Drama, date_of_released=02 September 2015, view_node=read more >]], Book [book=InnerBook [description=Horror, date_of_released=02 September 2015, view_node=read more >]]], pager=Pager [pages=1, page=0, count=2, limit=2]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.