Java对象与JSON字符串互相转换

Java对象与JSON字符串互相转换目录一、Java对象转为JSON字符串二、JSON字符串转为Java对象JSON解析器,常见的解析器:Jsonlib,Gson,fastjson,jackson介绍:Jackson一、Java对象转为JSON字符串1、引入需要的Jackson所需要的jar包(三个)2、创建一个Person类(代码见后面)注解1,@JsonIgnore作用:排除属性 注解2…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

一、Java对象转为JSON字符串

二、JSON字符串转为Java对象

 

JSON解析器,常见的解析器:Jsonlib,Gson,fastjson,jackson
介绍:Jackson

一、Java对象转为JSON字符串

1、引入需要的Jackson所需要的jar包(三个)

Java对象与JSON字符串互相转换

2、创建一个Person类(代码见后面)

  • 注解1,@JsonIgnore 作用:排除属性
  • 注解2,@JsonFormat 作用:属性值的格式化(日期等处理)

3、创建Jackson核心对象,ObjectMapper,用来转换

方法1,writeValue(参数1,参数2)

参数1介绍
  1. File 将obj对象转换为JSON字符串,并保存到指定的文件中

  2. Writer 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

  3. OutputStream 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

参数2介绍

就是需要转换成JSON字符串的对象

方法2,writeValueAsString(obj) obj就是需要转换成JSON字符串的对象

4、实例测试

Person.java

package com.json.pojo;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 一个人的对象类
 * @author xuexue
 *
 */
public class Person {
	//姓名
	private String name;
	
	//年龄
	private int age;
	
	//地址
	private String address;
	
	//日期
	@JsonFormat(pattern = "yyyy/MM/dd hh:mm:ss")
	private Date date;

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	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 getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", address=" + address + ", date=" + date + "]";
	}

	
}

Testt.java测试类(输出结果在注释上)

package com.json.test;


import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.junit.jupiter.api.Test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.json.pojo.Person;

/**
 * Person对象转为JSON字符串
 * @author xuexue
 *
 */
public class Testt {
	
	@Test
	public void test() throws JsonProcessingException {
		//1、创建Person对象
		Person person = new Person();
		person.setName("张三");
		person.setAge(20);
		person.setAddress("河源市");
		person.setDate(new Date());
		
		//2、创建Jackson核心对象,ObjectMapper
		ObjectMapper mapper = new ObjectMapper();

		//3、person对象转为JSON字符串
		String valueAsString = mapper.writeValueAsString(person);
		System.out.println(valueAsString);//{"name":"张三","age":20,"address":"河源市","date":"2019/09/05 10:36:27"}
	}
	
	@Test
	public void test2() throws JsonProcessingException {
		//1、创建Map集合
		HashMap<String, Object> map = new HashMap<>();
		map.put("name", "lisi");
		map.put("age", 33);
		map.put("address", "河源");
		
		
		//2、创建Jackson核心对象,ObjectMapper
		ObjectMapper mapper = new ObjectMapper();

		//3、person对象转为JSON字符串
		String valueAsString = mapper.writeValueAsString(map);
		System.out.println(valueAsString);//{"address":"河源","name":"lisi","age":33}
	}
	
	@Test
	public void test3() throws JsonProcessingException {
		//1、创建Map集合
		List<Person> list = new ArrayList<Person>();
		list.add(new Person());
		list.add(new Person());
		list.add(new Person());
		
		
		//2、创建Jackson核心对象,ObjectMapper
		ObjectMapper mapper = new ObjectMapper();

		//3、person对象转为JSON字符串
		String valueAsString = mapper.writeValueAsString(list);
		System.out.println(valueAsString);//[{"name":null,"age":0,"address":null,"date":null},{"name":null,"age":0,"address":null,"date":null},{"name":null,"age":0,"address":null,"date":null}]
	}
}

 

二、JSON字符串转为Java对象

1、创建JSON字符串

2、创建Jackson核心对象

3、调用readValue方法进行转换,参数1是需要转换的json字符串,参数2是转换后的对象的字节码对象

	@Test
	public void test4() throws IOException {
		//1、创建JSON串
		String json = "{\"address\":\"河源\",\"name\":\"lisi\",\"age\":33}";
		//2、创建Jackson核心对象,ObjectMapper
		ObjectMapper mapper = new ObjectMapper();

		//3、JSON字符串转为Person对象
		Person person = mapper.readValue(json, Person.class);
		System.out.println(person);//[{"name":null,"age":0,"address":null,"date":null},{"name":null,"age":0,"address":null,"date":null},{"name":null,"age":0,"address":null,"date":null}]
	}

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191007.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python测试系列教程——python+Selenium+chrome自动化测试框架

    python测试系列教程——python+Selenium+chrome自动化测试框架全栈工程师开发手册(作者:栾鹏)python教程全解需要的环境浏览器(Firefox/Chrome/IE..)PythonSeleniumSeleniumIDE(如果用Firefox)FireBug、FirePath(如果用Firefox)chromedriver、IEDriverServer、phantomjs.exeIDE(Pycharm/Subl…

    2022年4月29日
    86
  • 显卡矿机装linux教程,8张GTX1080Ti显卡加副电源矿机组装教程

    显卡矿机装linux教程,8张GTX1080Ti显卡加副电源矿机组装教程在经历一波短暂的回调后,最近比特币又持续升温,一度突破19000元大关,目前价格基本在18000-19000之间浮动,挖矿市场可谓是一片火爆!近日大风哥闲来无事,自己也倒腾了一台矿机来玩玩,特来大家分享一下安装教程及心得。说到挖矿,显卡当然是首当其冲了,而现阶段市售各型号的显卡也因虚拟币市场火热而处于货源紧缺的状态,可谓是一卡难求!赶巧笔者手上有几片GTX1080Ti,矿机的显卡就选用它们了!Em…

    2022年9月30日
    0
  • 华为模拟器ensp怎么安装_模拟器下载手机版

    华为模拟器ensp怎么安装_模拟器下载手机版华为模拟器ENSP下载与安装教程【一】:安装环境1.Win10系统安装也可虚拟机安装【二】安装链接点击连接下载提取码:ob2v要是感觉下载慢的话可以开个会员(土豪随意)步骤1.下载后解压并安装,首先要先在安装这三个软件2.下面我们开始安装VirtualBox5.2.26并默认安装直接下一步就可以下面几步都是默认安装如图所示安装完成不想打开把运行勾去掉就行,点击完…

    2022年10月15日
    0
  • vb学习什么[通俗易懂]

    vb学习什么[通俗易懂]学习几天的vb总结一下实在学习什么,我们看到的vb程序设计这本书中,第一句话就介绍了vb是什么,它是一门面向对象的可视化程序设计语言,而我们用的一个vb6.0其实是一个已经打包的平台,而在这门语言中提到了面向对象,那面向对象是什么,它就是书中提到的三要素:属性、事件、方法。属性是指对象的特征,描述对象的数据,在生活中可以理解为你看到一个人或者一个事物给你的外在表象,不同的事物具有…

    2022年6月21日
    26
  • dubbo常见的一些面试题「建议收藏」

    dubbo常见的一些面试题「建议收藏」dubbo常见的一些面试题

    2022年4月21日
    40
  • 面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法

    面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法前言我是一个普通本科出身的Android程序员,我的学校也不过就是一个普通二本。嗯,我的学弟学妹们也是一样的,都是普通二本。但是和我不同的是,现在的社会越来越浮躁了,浮躁的让人沉不下心认真做事,让人忍不住去想各种有的没的。比如我的这些学弟学妹们。我已经不止一次收到来自他们的私信了,他们问的内容,无一不是表达对自己学历的自卑和对即将离开学校的自己的不自信,还有对面试被拒的伤心。千篇一律的问题,基本内容如下:面试挂了,大厂面试到底更看重学历还是技术?我这样的学历在求职中有什么需要注意点的点吗?

    2022年6月6日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号