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);
}

参考文档

最新文章

  1. Linux下编译OpenSSL
  2. Linux 内核配置和编译
  3. 事件处理原理(IOS篇) by sixleaves
  4. [ofbiz]service中OUT的定义
  5. ubuntu下包管理器apt-get常用命令
  6. MyBatis 3 User Guide Simplified Chinese.pdf
  7. Unity3d&amp;C#分布式游戏服务器ET框架介绍-组件式设计
  8. 【BZOJ3506】【Cqoi2014】排序机械臂
  9. 虚拟机设置静态IP配置
  10. 通过href链接实现从当前页面跳转到动态页的指定页面的实现方式
  11. 【SQL】 MySql与SqlServer差异比较(MySql踩坑全集)
  12. HADOOP HA 踩坑 - org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /mnt/data1/hadoop/dfs/journal/hdfscluster not formatted
  13. 大神教你Nginx常用基础配置方案
  14. Redis与memchache对比
  15. SAFESEH 映像是不安全的
  16. HDU 4786 Fibonacci Tree (2013成都1006题)
  17. mysql 数据操作 多表查询 多表连接查询 全外连接
  18. 跟着TensorFlow的进阶级教程实现MNIST库的训练
  19. MySQL数据库之数据类型和完整性约束
  20. Android4.2.2 Gallery2源码分析(5)——GLCanvasImpl.java

热门文章

  1. linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案
  2. HTML 网页开发、CSS 基础语法——九.CSS概述
  3. 鸿蒙内核源码分析(内存主奴篇) | 皇上和奴才如何相处 | 百篇博客分析OpenHarmony源码 | v10.04
  4. 系统设计实践(03)- Instagram社交服务
  5. Jmeter 压力测试学习8--断言
  6. Bayou复制分布式存储系统
  7. 从零入门 Serverless | 一文搞懂函数计算及其工作原理
  8. C#开发BIMFACE系列45 服务端API之创建离线数据包
  9. 题解 Wide Swap
  10. Unity——EasyTouch摇杆插件使用