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


相关推荐

  • 细思极恐,你真的会写 Java 吗

    细思极恐,你真的会写 Java 吗点击上方"编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文Don'twalktooslowly,theflowerswi…

    2022年7月8日
    18
  • Vue3 最长递增子序列详解

    Vue3 最长递增子序列详解Vue3最长递增子序列研究本文初衷彻底讲清楚Vue3源码中实现最长递增子序列的算法。概念名词**最长递增子序列:**在一个给定的数值序列中,找到一个子序列,使得这个子序列元素的数值依次递增,并且这个子序列的长度尽可能地大。最长递增子序列中的元素在原序列中不一定是连续的。比如:序列[10,9,2,5,3,7,101,18]的最长递增子序列是[2,3,7,101]或[2,3,7,18]。序列[3,2,8,9,5,6,7,11,15,4]

    2022年5月4日
    62
  • acwing1185. 单词游戏(欧拉图)「建议收藏」

    acwing1185. 单词游戏(欧拉图)「建议收藏」有 N 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 N,表示盘子数量。接下来 N 行,每行包含一个小写字母字符串,表示一个盘子上的单词。一个单词可能出现多次。输出格式如果存在合法解,则输出”Ordering is possible.”,否则输出”The

    2022年8月9日
    3
  • vs2005注册_vs注册界面设计

    vs2005注册_vs注册界面设计注册码:KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J找到SETUP文件夹下的setup.sdb,用记事本打开它,找到[ProductKey],将下面的一行序列号删除,改为正式Key,保存后再安装就是正式版了,记住,中间没有横线!!如果先前已经安装好180天的版本,请在添加删除VisualStudio2005时,可以输入序列号,进行升级。找到SETUP文件夹下的setup.

    2022年8月22日
    5
  • java illegal character_java.lang.illegalaccesserror

    java illegal character_java.lang.illegalaccesserror本文整理匯總了Java中org.apache.commons.lang3.ArrayUtils.isNotEmpty方法的典型用法代碼示例。如果您正苦於以下問題:JavaArrayUtils.isNotEmpty方法的具體用法?JavaArrayUtils.isNotEmpty怎麽用?JavaArrayUtils.isNotEmpty使用的例子?那麽恭喜您,這裏精選的方法代碼示例或許可以為…

    2022年9月28日
    3
  • suse linux 版本查看,SUSE Linux 查看版本号

    suse linux 版本查看,SUSE Linux 查看版本号1 cat proc version 内核版本 cat proc versionsuse linux DM source cat proc versionLinux 0 76 0 11 default geeko buildhost gccversion4 3 4 gcc 4 3 branchrevisi SUSELinux

    2025年10月14日
    3

发表回复

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

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