0

Let's say that's my JSON structure.

{
"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
}

}

Here is my Book class.

public class Book {
    String description;
    String date_of_released;
    String view_node;
}

That's Pager class.

public class Pager {
    int pages;
    int page;
    int count;
    int limit;
}

That's what I made because I thought I need a class for parse JSON. (Not sure is that really needed or not)

public class BookInfo {
    ArrayList<Book> books;
    Pager pager;
}

After execute, it works for pager perfectly.

Pager's fine

But ArrayList's object's individual fields are all null even though the size is 2 as JSON. Why?

enter image description here

3 Answers 3

2

Use this

public class BookWrapper {
     Book book;
}

public class BookInfo {
    ArrayList<BookWrapper> books;
    Pager pager;
}

OR reformat the 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
    }

}
Sign up to request clarification or add additional context in comments.

8 Comments

edited, plz take a look. The error remains the same.
(1) I validated my JSON. (2) I changed the ArrayList name nodes to books.
seems you misunderstand what I mean, anyway I have edited with two solutions
how you do this? I don't my sharing my testing project. :3
I can't understand what you mean
|
0

First of all your json is not valid, to check your json pls go to this link jsonlint.com and to make POJO classes of your json visit this link http://www.jsonschema2pojo.org/

and your valid json should be

{
    "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
    }
}

it should work after this!!

1 Comment

I always use JSONLint. My original JSON has no problem. This is just my mistake cuz I reduced some objects from it and changed the names manually. But the error is not changed yet.
0

Try this -

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);
    }
}

Result

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]]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.