List,Map,数组型Json生产以及解析

本文介绍如何用Java处理三种不同类型的JSON数据:List型、数组型和Map型,并演示了生成和解析这些JSON数据的方法。

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

List,Map,数组型Json生产以及解析

 ONE Goal , ONE Passion !

3种类型的格式:

第一: list型:
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
第二: 数组型:
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
第三: Map型:
 {"0001":{"id":"0001","name":"百年孤独"},"0003":{"id":"0003","name":"红与黑"},"0002":{"id":"0002","name":"三个火枪手"}}
全局使用数据源:
    Gson gson = new Gson();
    Book book_1 = new Book("0001", "百年孤独");
    Book book_2 = new Book("0002", "三个火枪手");
    Book book_3 = new Book("0003", "红与黑");

1,List型json生产及解析


生成:

       ArrayList<Book> cList = new ArrayList<Book>();
        cList.add(book_1);
        cList.add(book_2);
        cList.add(book_3);

打印list对对象:
[Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]

     // 将list对象直接转换list_Json ------   json格式字符串
        String list_Json = gson.toJson(cList);
解析:
// 把数组类型(集合类型也是数组类型)的gson转化为--- 集合
        List list= (List) gson.fromJson(list_Json,
                new TypeToken<List<Book>>() {
                }.getType());
    // 转换后的list:
    [Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]

注意: list集合与数组(集合)型json字符串不一样
二者区别在于:集合中存储的数据没有”“;而json字符串格式中key有”“,value如果是String的话有”“;

// list对象:
[Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]

// 数据(集合)型json字符串:
 [{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]

2,数组型json生产及解析

生成:
Book[] books = { book_1, book_2, book_3 };

// 将数组转换为json字符串
String books_array = gson.toJson(books);

转换后的json字符串 ----books_array :
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]

注意:数组转换成的json字符串与集合转换成的一致.

解析:
    Book[] books_new = gson.fromJson(books_array, Book[].class);

System.out.println("数组类型json转化成数组" + books_new[1]);

一般我们不把数组型解析成数组而是解析成集合.

2,Map型json生产及解析

生成:
Map<String, Book> map = new HashMap<String, Book>();
        map.put("0001", book_1);
        map.put("0002", book_2);
        map.put("0003", book_3);

打印的map对象:
{0001=Book [id=0001, name=百年孤独], 0003=Book [id=0003, name=红与黑], 0002=Book [id=0002, name=三个火枪手]}

//将map对象转换为json字符串:     
String json_map = gson.toJson(map);
解析:
        Map<String, Book> map_new = gson.fromJson(json_map,
                new TypeToken<Map<String, Book>>() {
                }.getType());


//将map_new 对象遍历
        for (Map.Entry<String, Book> book : map_new.entrySet()) {

            System.out.println(book.getValue());

        }

手动生产json相关:
http://blog.youkuaiyun.com/fengltxx/article/details/51035430
xml相关详解:
http://blog.youkuaiyun.com/fengltxx/article/details/51764040

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值