JSON数据和Java对象的相互转换
JSON解析器:
常见的解析器: Jsonlib, Gson, fastjson, jackson
其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较多,推荐使用jackson
使用步骤:
- 导入jackson的相关jar包
 - 创建Jackson核心对象objectMapper
 - 调用objectMapper的相关方法进行转换
 
Java对象转换JSON
person类
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Person {
    private String name;
    private int age;
    private String gender;
    //JsonIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date bir;
    public Date getBir() {
        return bir;
    }
    public void setBir(Date bir) {
        this.bir = bir;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}
    //Java对象转为JSON字符串
    @Test
    public void test1() throws Exception {
        //1.创建Person对象
        Person p  = new Person();
        p.setName("张三");
        p.setAge(22);
        p.setGender("男");
        p.setBir(new Date());
        //2.创建Jackson的核心对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换
        /**
         * 转换方法:
         *       writeValue(参数1,obj):
         *       参数1:
         *           File:将obj对象转换为JSON字符串,并保存到指定的文件中
         *           Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流
         *           OutputString:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
         *
         *        writeValueAsString(obj):将对象转为json字符串
         *
         */
        String json = mapper.writeValueAsString(p);
        System.out.println(json);//{"name":"张三","age":22,"gender":"男"}
        //writeValue,将数据写到a.txt文件中
        mapper.writeValue(new File("a.txt"),p);
        //writeValue.将数据关联到Writer中
        mapper.writeValue(new FileWriter("b.txt"),p);
1234567891011121314151617181920212223242526272829303132
注解:
- @JsonIgnore :排除属性。
 - @JsonFormat :属性值得格式化
 
    //JsonIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date bir;
123
List方式:
 //lIST集合
    @Test
    public void test2() throws Exception{
        Person p2  = new Person();
        p2.setName("张三");
        p2.setAge(22);
        p2.setGender("男");
        p2.setBir(new Date());
        //创建List集合
        List<Person> ps = new ArrayList<Person>();
        ps.add(p2);
        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(ps);
        System.out.println(json);//[{"name":"张三","age":22,"gender":"男","bir":"2020-06-17"}]
    }
123456789101112131415161718
Map方式:
@Test
    public void test3() throws Exception{
        Person p3  = new Person();
        p3.setName("张三");
        p3.setAge(22);
        p3.setGender("男");
        p3.setBir(new Date());
        //创建map集合
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name","李四");
        map.put("age",22);
        map.put("gender","男");
        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(map);
        System.out.println(json);//{"gender":"男","name":"李四","age":22}
    }
123456789101112131415161718192021
JSON转为Java对象
使用readValue
    //json转java 字符串对象
    @Test
    public void test4() throws Exception{
        //初始化json字符串
        String json = "{\"gender\":\"男\",\"name\":\"李四\",\"age\":22}";
        //创建ObjMapper对象
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);
        System.out.println(person);
    }
												
											JSON数据和Java对象的相互转换的更多相关文章
- JSON数据与Java对象的相互转换
		
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
 - json字符串与java对象的相互转换(jackson)
		
1.java对象转换为json字符串 package com.chichung.json; import com.fasterxml.jackson.core.JsonProcessingExcept ...
 - 使用Gson转换json数据为Java对象的一个例子
		
记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...
 - JSON解析器之jackson json数据和java对象转换
 - Java中JSON字符串与java对象的互换实例详解
		
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...
 - Java中JSON字符串与java对象的互换实例详解(转)
		
http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...
 - 用JAVA进行Json数据解析(对象数组的相互嵌套)
		
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...
 - java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
		
List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...
 - 一种从JSON数据创建Java类的高效办法
		
<一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...
 
随机推荐
- 启动jemeter 报错相关解决方案
			
1:当启动jemeter时报错"页面文件太小,无法完成操作" 如图: 是说明分配的内容不足,即可调整内存重启即可解决 1):打开:控制面板>系统和安全>系统 2):点击 ...
 - Composer基础
			
摘要 本文介绍Composer的入门知识,包括require和autoload部分. Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发 ...
 - P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】
			
正题 题目链接:https://www.luogu.com.cn/problem/P5363 题目大意 \(1\times n\)的网格上有\(m\)个硬币,两个人轮流向前移动一个硬币但是不能超过前一 ...
 - YbtOJ#482-爬上山顶【凸壳,链表】
			
正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/2 题目大意 \(n\)个点,\(x\)坐标递增,第\(i\)个点向第\(j\)个点连边. 开 ...
 - 一、Ansible基础之入门篇
			
目录 1. Ansible基础 1.1 介绍 1.2 工作原理 1.3 如何安装 1.3.1 先决条件 1.3.2 安装Ansible 1.4 管理节点与被管理节点建立SSH信任关系 1.5 快速入门 ...
 - 浅析 Java 内存模型
			
文章转载于 飞天小牛肉 的 <「跬步千里」详解 Java 内存模型与原子性.可见性.有序性>.<JMM 最最最核心的概念:Happens-before 原则> 1. 为什么要学 ...
 - C#开发BIMFACE系列40 服务端API之模型集成
			
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
 - Linux从头学15:【页目录和页表】-理论 + 实例 + 图文的最完全、最接地气详解
			
作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...
 - $hadow$ocks与Privoxy基础原理
			
$hadow$ocks与Privoxy基础原理 以下所有提到$hadow$ocks的均以ss指代 为什么要用ss呢? 在早期(如今绝大多数也是),对于互联网的访问流程是及其简单的:浏览器(或其他客户端 ...
 - SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean
			
SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean 在SpringBoot中开发AspectJ时,使用CTW的方式来织入代码,由于采用这种形式,切面Bean ...