阅读 96

JSON数据处理

JSON数据处理

1.json的数据格式

1.1 数组格式




    
    Title
    






1.2 对象格式




    
    Title
    






1.3 数据嵌套对象




    
    json数据的嵌套
  






1.4 对象嵌套数据




    
    Title
    






1.5 json嵌套




    
    json数据的嵌套
    






2.fastjson

它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java Bean。

@Data
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
    private Date birthday;
}

2.1 Java对象序列化到Json

//java中的对象,Student对象,序列化Json格式字符串
    @Test
    public void testObjectToJson(){
        Student student = new Student();
        student.setId(1);
        student.setName("张三");
        student.setAge(20);
        student.setEmail("zs@163.com");
        student.setBirthday(getDate());
        //student对象转成json格式的字符串
        //调用静态方法,传递要抓换的对象
        String jsonString = JSON.toJSONString(student);
        System.out.println(jsonString);
        //{"age":20,"birthday":1629451099346,"email":"zs@163.com","id":1,"name":"张三"}
    }
{
    "age":20,
    "birthday":1629451099346,
    "email":"zs@163.com",
    "id":1,
    "name":"张三"
}
//java中的集合List,序列化为Json格式字符串
    @Test
    public void testListToJson(){
        //集合List,存储Student对象
        ArrayList list = new ArrayList<>();
        Student student1 = new Student();
        student1.setId(1);
        student1.setName("张三");
        student1.setAge(20);
        student1.setEmail("zs@163.com");
        student1.setBirthday(getDate());

        Student student2 = new Student();
        student2.setId(2);
        student2.setName("赵四");
        student2.setAge(25);
        student2.setEmail("zs1@163.com");
        student2.setBirthday(getDate());
        //student对象存储到集合中
        list.add(student1);
        list.add(student2);
        //List集合,序列化为Json格式字符串
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
        //转后的结果是数组,数组的元素是对象
        //[{"age":20,"birthday":1629451016542,"email":"zs@163.com","id":1,"name":"张三"},
        // {"age":25,"birthday":1629451016542,"email":"zs1@163.com","id":2,"name":"赵四"}]

    }
[
    {"age":20,"birthday":1629451016542,"email":"zs@163.com","id":1,"name":"张三"},
    {"age":25,"birthday":1629451016542,"email":"zs1@163.com","id":2,"name":"赵四"}
]
    //java中的集合Map,序列化为Json格式字符串
    @Test
    public void testMapToJson(){
        //创建map集合,键为字符串类型,值为Student对象
        HashMap map = new HashMap<>();

        Student student1 = new Student();
        student1.setId(1);
        student1.setName("张三");
        student1.setAge(20);
        student1.setEmail("zs@163.com");
        student1.setBirthday(getDate());

        Student student2 = new Student();
        student2.setId(2);
        student2.setName("赵四");
        student2.setAge(25);
        student2.setEmail("zs1@163.com");
        student2.setBirthday(getDate());
        //Map集合存储Student对象
        map.put("student1",student1);
        map.put("student2",student2);

        String jsonString = JSON.toJSONString(map);
        System.out.println(jsonString);
        //json格式字符串是对象,对象中有两个键,键对应的值是Student对象
        //{"student2":{"age":25,"birthday":1629451782886,"email":"zs1@163.com","id":2,"name":"赵四"},
        // "student1":{"age":20,"birthday":1629451782886,"email":"zs@163.com","id":1,"name":"张三"}}

    }
{
    "student2":{"age":25,"birthday":1629451782886,"email":"zs1@163.com","id":2,"name":"赵四"},
    "student1":{"age":20,"birthday":1629451782886,"email":"zs@163.com","id":1,"name":"张三"}
}

2.2 Json反序列化到java对象

 //Json格式字符串,反序列化到Java对象
    @Test
    public void testJsonToObject(){
        String jsonString = "{\"age\":20,\"birthday\":1629451099346,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"}";
        //Json类的静态方法  parseObject
        //传递要反序列化的Json字符串,传递Java对象的class对象
        Student student=JSON.parseObject(jsonString,Student.class);
        System.out.println(student);
    }
 //Json格式字符串,反序列化到List集合
    @Test
    public void testJsonToList(){
        String jsonString = "[{\"age\":20,\"birthday\":1629451016542,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"},\n" +
                " {\"age\":25,\"birthday\":1629451016542,\"email\":\"zs1@163.com\",\"id\":2,\"name\":\"赵四\"}]";
        //Json类的静态方法  parseArray
        //传递Json格式的字符串,传递转换后的集合的泛型的class对象
        List list = JSON.parseArray(jsonString, Student.class);
        list.forEach(System.out::println);
    }
//Json格式字符串,反序列化到Map集合
    @Test
     public void testJsonToMap(){
        String jsonString = "{\"student2\":{\"age\":25,\"birthday\":1629455067665,\"email\":\"zs1@163.com\",\"id\":2,\"name\":\"赵四\"}," +
                "\"student1\":{\"age\":20,\"birthday\":1629455067665,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"}}";
        //json类的静态方法,parseObject
        //直接进行反序列化,Map集合是没有泛型的,泛型没有事不安全的
        //转后的集合,必须有泛型
        //调用parseObject,传递参数,TypeReference类型
        //将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。
        //keySet():迭代后只能通过get()取key
        Map map = JSON.parseObject(jsonString, new TypeReference>() {});
        for (String key : map.keySet()){
            System.out.println(key+":"+map.get(key));
        }
    }

原文:https://www.cnblogs.com/annuusl/p/15167841.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐