老程序员分享: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);


}

相关文章
|
23天前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
49 9
|
22天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
8天前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
25天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
20天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
25天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
25天前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
21 5
|
1月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
29 6
|
25天前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
24 0
|
1月前
|
存储 前端开发 Java
你还没有对象吗?java带你创建一个吧
你还没有对象吗?java带你创建一个吧
12 0
下一篇
无影云桌面