JSON学习(一):JavaBean、List类型及Map类型与Json类型的相互转化

简介: JSON学习(一):JavaBean、List类型及Map类型与Json类型的相互转化

先随便建一个类Person.java:


package demo01.pojo;
public class Person {
    private Integer id;
    private String name;
    public Person() {
    }
    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}



在JsonTest.java中实现类型的相互转换(记得导jar包(我使用的是gson-2.2.4.jar)):


1、JavaBean和Json的相互转换:

     

使用toJson()方法转换成json字符串,使用fromJson()方法转换回来

/**
     * 1.javaBean和json的互转
     */
    @Test
    public void test1(){
        Person person = new Person(1, "哈哈哈");
        Gson gson = new Gson();
        //toJson()方法可以把java对象转换成为json字符串
        String personJsonString = gson.toJson(person);
        System.out.println(personJsonString);
        //fromJson()把json字符串转换为java对象
        Person person1 = gson.fromJson(personJsonString, Person.class);
        System.out.println(person1);
    }


2、 List类型和Json的相互转换

     

这里采用的方法是写一个PersonListType.java类去继承TypeToken,使用它的getType()方法获取类型作为fromJson的第二个参数(也可采用匿名内部类的方法)


PersonListType.java:

package demo01.json;
import com.google.gson.reflect.TypeToken;
import demo01.pojo.Person;
import java.util.ArrayList;
/**
 * 在JsonTest.java中,用做将json字符串转换成list
 */
public class PersonListType extends TypeToken<ArrayList<Person>> {
}


/**
     * 2.list和json的互转
     */
    @Test
    public void test2(){
        List<Person> personList=new ArrayList<>();
        personList.add(new Person(1,"哈哈哈"));
        personList.add(new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把列表转换为json字符串
        String personListJsonString = gson.toJson(personList);
        System.out.println(personListJsonString);
        List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType());
        System.out.println(list);
    }


3、Map类型和Json的相互转换

     

原理和List基本相同,这里使用匿名内部类的方法,就不用再另写一个类了

/***
     * 3.map和json的互转
     */
    public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
        personMap.put(1,new Person(1,"哈哈哈"));
        personMap.put(2,new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把map集合转换成为json字符串
        String personMapJsonString = gson.toJson(personMap);
        System.out.println(personMapJsonString);
        //把json字符串转换成为map集合
//        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType());
        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType());
        System.out.println(personMap2);
    }


完整JsonTest.java代码:

package demo01.json;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import demo01.pojo.Person;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JsonTest {
    /**
     * 1.javaBean和json的互转
     */
    @Test
    public void test1(){
        Person person = new Person(1, "哈哈哈");
        Gson gson = new Gson();
        //toJson()方法可以把java对象转换成为json字符串
        String personJsonString = gson.toJson(person);
        System.out.println(personJsonString);
        //fromJson()把json字符串转换为java对象
        Person person1 = gson.fromJson(personJsonString, Person.class);
        System.out.println(person1);
    }
    /**
     * 2.list和json的互转
     */
    @Test
    public void test2(){
        List<Person> personList=new ArrayList<>();
        personList.add(new Person(1,"哈哈哈"));
        personList.add(new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把列表转换为json字符串
        String personListJsonString = gson.toJson(personList);
        System.out.println(personListJsonString);
        List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType());
        System.out.println(list);
    }
    /***
     * 3.map和json的互转
     */
    public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
        personMap.put(1,new Person(1,"哈哈哈"));
        personMap.put(2,new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把map集合转换成为json字符串
        String personMapJsonString = gson.toJson(personMap);
        System.out.println(personMapJsonString);
        //把json字符串转换成为map集合
//        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType());
        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType());
        System.out.println(personMap2);
    }
}
相关文章
|
7月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
433 2
|
7月前
|
存储 Java Go
【Golang】(3)条件判断与循环?切片和数组的关系?映射表与Map?三组关系傻傻分不清?本文带你了解基本的复杂类型与执行判断语句
在Go中,条件控制语句总共有三种if、switch、select。循环只有for,不过for可以充当while使用。如果想要了解这些知识点,初学者进入文章中来感受吧!
272 2
|
存储 Dart
Dart的Map类型
Dart的Map类型
284 0
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
269 2
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
2228 7
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
228 3
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
315 0
【python】python指南(五):静态类型注解之List
|
NoSQL Java Redis
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
|
7月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析: