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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NodeJS环境下使用axios上传文件

    NodeJS环境下使用axios上传文件最近有个需求,需要在nodejs后端上传图片到云存储服务器,刚好对axios这个库比较熟悉,因此便开始在网上查资料,但是网上大多的都是用axios在前端上传文件的代码,即是基于浏览器环境的。后来找到了基于Nodejs环境的axios上传代码,一番copy后便开始了测试,本以为会一帆风顺,没想到服务器那边却总是返回如下错误,也就是说我们的请求并没有以multipart/form-data的形式封装好…

    2022年6月16日
    106
  • java实战——图书管理系统

    因为这个写的比较完整,所以简单说明一下过程中使用的EJB和RMI两个东西。EJB实现原理:就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。RMI实现原理:就是通过Java对象可序列化机制实现分布计算。好了,没了,就这么简单…想稍微深入了解一下的看一下这个好了,我就不再赘述。https://blog.csdn.net/lovechuanyu/article/…

    2022年4月12日
    37
  • java类加载的过程 父_类加载机制原理

    java类加载的过程 父_类加载机制原理JVM和类当我们调用Java命令运行某个Java程序时,该命令将会启动一条Java虚拟机进程,不管该Java程序有多么复杂,该程序启动了多少个线程,它们都处于该Java虚拟机进程里。同一个JVM的所有线程、所有变量都处于同一个进程里,它们都使用该JVM进程的内存区。当系统出现以下几种情况时,JVM进程将被终止:程序运行到最后正常接收; 程序运行到使用Sys…

    2022年8月11日
    4
  • pycharm激活码最新【中文破解版】

    (pycharm激活码最新)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    42
  • com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定[通俗易懂]

    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定[通俗易懂]com.mysql.jdbc.Driver是mysql-connector-java5中的,com.mysql.cj.jdbc.Driver是mysql-connector-java6中的1,JDBC连接Mysql5com.mysql.jdbc.Driver:driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localho

    2022年6月23日
    21
  • Win10 2004显示无法访问Internet小地球 却可以上网 的 简单解决办法「建议收藏」

    最简单的解决办法把下面的代码复制到记事本,并另存为为reg后缀名的文件(例如:修复网络.reg)双击打开并重启即可解决问题WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]”ActiveDnsProbeContent”=”131.107.255.255″”ActiveDnsProbeContentV6″=”f

    2022年4月8日
    44

发表回复

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

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