JSON解析器:

常见的解析器: Jsonlib, Gson, fastjson, jackson

其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较多,推荐使用jackson

使用步骤:

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象objectMapper
  3. 调用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

注解:

  1. @JsonIgnore :排除属性。
  2. @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对象的相互转换的更多相关文章

  1. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

  2. json字符串与java对象的相互转换(jackson)

    1.java对象转换为json字符串 package com.chichung.json; import com.fasterxml.jackson.core.JsonProcessingExcept ...

  3. 使用Gson转换json数据为Java对象的一个例子

    记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...

  4. JSON解析器之jackson json数据和java对象转换

  5. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  6. Java中JSON字符串与java对象的互换实例详解(转)

    http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...

  7. 用JAVA进行Json数据解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...

  8. java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

    List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...

  9. 一种从JSON数据创建Java类的高效办法

    <一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...

随机推荐

  1. [转载]CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)

    关于 Nginx (发音 "engine x")这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教程演示如何在CentOS ...

  2. P1712-[NOI2016]区间【线段树,尺取法】

    正题 题目链接:https://www.luogu.com.cn/problem/P1712 题目大意 \(n\)个区间,求出其中\(m\)个区间使得它们有覆盖同一个点且最长区间长度减去最短长度最小. ...

  3. YbtOJ#593-木棍问题【费用流】

    正题 题目链接:https://www.ybtoj.com.cn/contest/114/problem/3 题目大意 \(n*m\)的网格上有一些格子有木球,两个相邻木球直接可以有木棍. 两个\(L ...

  4. CentOS7 Docker容器无法ping通宿主机ip问题解决记录

    Docker服务部署启动容器发现docker容器内访问宿主机IP不通,于是进入容器内ping宿主机IP,发现无法ping通,容器IP为172.17.0.2,于是继续ping172.17.0.1也不通, ...

  5. 通用脱敏工具类和判断URL

    通用脱敏工具类 public class DesensitizationUtil { private static final int SIZE = 6; private static final S ...

  6. C++: 基于四叉树数据结构的自适应网格(初探)

    C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...

  7. tomcat unkonwhost

    服务器能ping通域名,tomcat死活不行,重启tomcat解决

  8. WCF服务调用超时错误:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:05:30”(已解决)

    问题: 线上正式环境调用WCF服务正常,但是每次使用本地测试环境调用WCF服务时长就是出现:套接字连接已中止.这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的.本地套接字超 ...

  9. hdu4479 (数学题)(算术基本定理)

    题目大意 给定一个三元组\((x,y,z)\)的\(gcd\)和\(lcm\),求可能的三元组的数量是多少,其中三元组是的具有顺序的 其中\(gcd\)和\(lcm\)都是32位整数范围之内 由算术基 ...

  10. Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战

    一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...