老程序员分享:java对象转json

简介: 老程序员分享:java对象转json

java对象转json


JSON解析器:


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


使用步骤:


  1.导入jackson相关jar包


  2.创建jackson核心对象 ObjectMapper


  3.调用ObjectMapper的相关方法转换


转换方法:


  writeValue(参数1,obj):


    参数1:


      File:将obj对象转换为JSON字符串,并保存到指定的文件中


      Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中


      OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中


  writeValueAsString(obj):将对象转为json字符串


Person实体类:


package com.example.domain;


public class Person {


//代码效果参考:http://hnjlyzjd.com/xl/wz_24089.html

private String name;

private int age;


private String gender;


@Override


public String toString() {


return "Person{" +


"name='" + name + '\'' +


", age=" + age +


", gender='" + gender + '\'' +


'}';


}


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;


}


}


测试类:java转换位json字符串


package com.example.test;


import com.example.domain.Person;


import com.fasterxml.jackson.core.JsonProcessingException;


import com.fasterxml.jackson.databind.ObjectMapper;


import org.junit.Test;


import java.io.File;


import java.io.FileWriter;


public class JacksonTest {


//Java对象转为JSON字符串


@Test


public void test1() throws Exception {


//1.创建Person对象


Person person = new Person();


person.setName("张三");


person.setAge(23);


person.setGender("男");


//2.创建Jackson的核心对象 ObjectMapper


ObjectMapper mapper = new ObjectMapper();


//3.转换


/


转换方法


writeValue(参数1,obj):


参数1:


File:将obj对象转换为JSON字符串,并保存到指定的文件中


Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中


OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中


writeValueAsString(obj):将对象转为json字符串


/


String json = mapper.writeValueAsString(person);


//System.out.println(json);// {"name":"张三","age":23,"gender":"男"}


//writeValue:将数据写到d:a.txt文件中


//mapper.writeValue(new File("d:a.txt"), person);


//writeValue:将数据关联到Writer中


mapper.writeValue(new FileWriter(""), person);


}


}


java对象转json-注解


注解:


  1.@JsonIgnore:排除属性。


public class Person {


private String name;


private int age;


private String gender;


//@JsonIgnore // 忽略该属性


private Date birthday;


测试:


@Test


public void test2() throws Exception {


//1.创建Person对象


Person person = new Person();


person.setName("张三");


person.setAge(20);


person.setGender("男");


person.setBirthday(new Date());


//2.转换


ObjectMapper mapper = new ObjectMapper();


String string = mapper.writeValueAsString(person);


System.out.println(string);// {"name":"张三","age":23,"gender":"男","birthday":1675910553917}


}


  2.@JsonFormat:属性值格式化


public class Person {


private String name;


private int age;


private String gender;


@JsonFormat(pattern = "yyyy-MM-dd") // 格式化该属性


private Date birthday;


测试:


@Test


public void test2() throws Exception {


//1.创建Person对象


Person person = new Person();


person.setName("张三");


person.setAge(20);


person.setGender("男");


person.setBirthday(new Date());


//2.转换


ObjectMapper mapper = new ObjectMapper();


String string = mapper.writeValueAsString(person);


System.out.println(string);// {"name":"张三","age":23,"gender":"男","birthday":1675910553917}


}


java对象转json-List&Map


List集合:数组(对应的是字符串就是字符串对象)


@Test


public void test3() throws Exception {


//1.创建Person对象


Person person = new Person();


person.setName("张三");


person.setAge(23);


person.setGender("男");


person.setBirthday(new Date());


Person person1 = new Person();


person1.setName("张三");


person1.setAge(23);


person1.setGender("男");


person1.setBirthday(new Date());


Person person2 = new Person();


person2.setName("张三");


person2.setAge(23);


person2.setGender("男");


person2.setBirthday(new Date());


//创建list集合


List


people = new ArrayList();


people.add(person);


people.add(person1);


people.add(person2);


//2.转换


ObjectMapper mapper = new ObjectMapper();


String string = mapper.writeValueAsString(people);


//【{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"},{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"},{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"}】


System.out.println(string);


}


Map集合:对象格式一致


@Test


public void test4() throws Exception {


//1.创建map对象


HashMap map = new HashMap();


map.put("name", "张三");


map.put("age", "20");


map.put("gender", "男");


//2.转换


ObjectMapper mapper = new ObjectMapper();


String string = mapper.writeValueAsString(map);


//{"gender":"男","name":"张三","age":"20"}


System.out.println(string);


}

相关文章
|
4月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
479 34
|
4月前
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
83 0
|
4月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
132 0
|
4月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
89 0
|
4月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
67 0
|
4月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
168 0
|
3月前
|
JSON IDE Java
鸿蒙开发:json转对象插件回来了
首先,我重新编译了插件,进行了上传,大家可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也简单介绍一下。
112 4
鸿蒙开发:json转对象插件回来了
|
4月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
4月前
|
Java
深入JavaSE:详解Java对象的比较。
总的来说,Java对象的比较就像海洋生物的比较,有外在的,有内在的,有面对所有情况的,也有针对特殊情况的。理解并掌握这些比较方式,就能更好地驾驭Java的世界,游刃有余地操作Java对象。
73 12
|
4月前
|
网络协议 Java 大数据
【高薪程序员必看】万字长文拆解Java并发编程!(1)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
96 0