Android Gson解析JSON数据

本文介绍使用GSON和FastJSON两个Java库解析JSON数据的方法,包括创建Java类来映射JSON字段,以及如何从JSON字符串中读取数据并转换为Java对象。示例展示了如何处理复杂的JSON结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入GSON包(http://download.youkuaiyun.com/detail/s1e1s/9067155)
json数据

{
    "rating": {
        "max": 10,
        "numRaters": 343,
        "average": "7.0",
        "min": 0
    },
    "subtitle": "",
    "author": [
        "[日] 片山恭一"
    ],
    "pubdate": "2005-1",
    "tags": [
        {
            "count": 133,
            "name": "片山恭一",
            "title": "片山恭一"
        },
        {
            "count": 62,
            "name": "日本",
            "title": "日本"
        },
        {
            "count": 60,
            "name": "日本文学",
            "title": "日本文学"
        },
        {
            "count": 38,
            "name": "小说",
            "title": "小说"
        },
        {
            "count": 32,
            "name": "满月之夜白鲸现",
            "title": "满月之夜白鲸现"
        },
        {
            "count": 15,
            "name": "爱情",
            "title": "爱情"
        },
        {
            "count": 8,
            "name": "純愛",
            "title": "純愛"
        },
        {
            "count": 8,
            "name": "外国文学",
            "title": "外国文学"
        }
    ],
    "origin_title": "",
    "image": "http://img3.douban.com/mpic/s1747553.jpg",
    "binding": "平装",
    "translator": [
        "豫人"
    ],
    "catalog": "\n      ",
    "pages": "180",
    "images": {
        "small": "http://img3.douban.com/spic/s1747553.jpg",
        "large": "http://img3.douban.com/lpic/s1747553.jpg",
        "medium": "http://img3.douban.com/mpic/s1747553.jpg"
    },
    "alt": "http://book.douban.com/subject/1220562/",
    "id": "1220562",
    "publisher": "青岛出版社",
    "isbn10": "7543632608",
    "isbn13": "9787543632608",
    "title": "满月之夜白鲸现",
    "url": "http://api.douban.com/v2/book/1220562",
    "alt_title": "",
    "author_intro": "",
    "summary": "那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。",
    "price": "15.00元"
}

新建一个类

public class Book {

    //属性名与json中的数据对应
    private String title;
    private String publisher;
    private String summary;
    //json源数据中的数组转换为ArrayList,key在转换为行的类的属性名
    private ArrayList<Tag> tags;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public ArrayList<Tag> getTags() {
        return tags;
    }

    public void setTags(ArrayList<Tag> tags) {
        this.tags = tags;
    }

}

解析代码

    //GSON
    //result是json字符串
    private void dealData(String result) {
        //实例化json对象
        Gson gson = new Gson();
        //从json数据源中获取类对象
        Book book = gson.fromJson(result, Book.class);
        //将对象转换为json字符串
        String toJSONString=gson.toJson(book);
    }
//Fast-json方式
private void dealData(String result) {
        //从json字符串中获取数据
        Book book = JSON.parseObject(result, Book.class);

        Book book1 = new Book();
        book1.setTitle("biaoti");
        Book book2 = new Book();
        book2.setTitle("biaoti");
        Book book3 = new Book();
        book3.setTitle("biaoti");

        List<Book> list = new ArrayList<Book>();
        list.add(book1);
        list.add(book2);
        list.add(book3);
        //将list列表转换为json字符串
        String jsonListString=JSON.toJSON(list).toString();

        //从json字符串中获取列表
        List<Book> books = JSON.parseObject(jsonListString,
                new TypeReference<List<Book>>() {
                });
        //输出[{"title":"biaoti"},{"title":"biaoti"},{"title":"biaoti"}]/3
        Log.i("info",jsonListString+"/"+books.size());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值