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

2022-11-08 15:55:27 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

目录

一、Java对象转为JSON字符串

二、JSON字符串转为Java对象

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

一、Java对象转为JSON字符串

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

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

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

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

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

参数1介绍

File 将obj对象转换为JSON字符串,并保存到指定的文件中 Writer 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 OutputStream 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

  1. File 将obj对象转换为JSON字符串,并保存到指定的文件中
  2. Writer 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
  3. OutputStream 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

参数2介绍

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

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

4、实例测试

Person.java

代码语言:javascript复制
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测试类(输出结果在注释上)

代码语言:javascript复制
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是转换后的对象的字节码对象

代码语言:javascript复制
	@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.cn/191007.html原文链接:https://javaforall.cn

0 人点赞