我们在开发的过程中,难免会到如下转换的情况:
java对象转JSONObject
JSONObject转java对象
JsonString转JSONObject
在分析这三种类型的相互转化之前,我们需要引入相关的jar包:
com.alibaba fastjson 1.2.54
org.json json 20230227
1.8 2.10.1 com.fasterxml.jackson.core jackson-databind ${jackson.version} com.fasterxml.jackson.core jackson-core ${jackson.version} com.fasterxml.jackson.core jackson-annotations ${jackson.version}
而我在开发中常用的是fastjson,这是阿里巴巴开源的框架,其开原地址为:https://github.com/alibaba/fastjson
同时,以Student类为例子,来演示这三者的相互转换。
Student类的代码如下所示:
/** * @author super先生 * @datetime 2023/4/7 14:09 * @desc 学生类,用来测试同JSONObject和JSONString转换的示例类 */ public class Student { private Long id; private String username; private String studentNo; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getStudentNo() { return studentNo; } public void setStudentNo(String studentNo) { this.studentNo = studentNo; } @Override public String toString() { return String.format( "output: id -> %d, username -> %s, studentNo -> %s", id, username, studentNo); } }
/** * java对象转化为JSONObject * * @author super先生 * @datetime 2023/4/7:14:29 * @return */ @Test public void testJavaToJSONObject() { Student student = new Student(); student.setId(12L); student.setUsername("super先生"); student.setStudentNo("20231232520"); JSONObject studentJsonObject = (JSONObject) JSONObject.toJSON(student); System.out.println(studentJsonObject); }
输出结果如下图:
/** * java对象转化为JSONString * * @author super先生 * @datetime 2023/4/7:14:33 * @return */ @Test public void testJavaToJSONString() { Student student = new Student(); student.setId(12L); student.setUsername("super先生"); student.setStudentNo("20231232520"); String studentJsonString = JSONObject.toJSONString(student); System.out.println(studentJsonString); }
输出结果如下图:
/** * JSONObject转为java实例化对象 * * @author super先生 * @datetime 2023/4/7:14:39 * @return */ @Test public void testJSONObjectToJava() { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", 12); jsonObject.put("username", "super先生"); jsonObject.put("studentNo", "20231232520"); Student student = jsonObject.toJavaObject(Student.class); System.out.println(student); }
输出结果如下图:
/** * JSONObject转为JSONString * * @author super先生 * @datetime 2023/4/7:14:42 * @return */ @Test public void testJSONObjectToJSONString() { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", 12); jsonObject.put("username", "super先生"); jsonObject.put("studentNo", "20231232520"); String studentJsonString = jsonObject.toJSONString(); System.out.println(studentJsonString); }
输出结果如下图:
/** * JSONString转为java实例化对象 * * @author super先生 * @datetime 2023/4/7:14:46 * @return */ @Test public void testJSONStringToJava() { String studentJsonString = "{\"studentNo\":\"20231232520\",\"id\":12,\"username\":\"super先生\"}"; Student student = JSONObject.parseObject(studentJsonString, Student.class); System.out.println(student); }
输出结果如下图:
/** * JSONString转为JSONObject * * @author super先生 * @datetime 2023/4/7:14:48 * @return */ @Test public void testJSONStringToJSONObject() { String studentJsonString = "{\"studentNo\":\"20231232520\",\"id\":12,\"username\":\"super先生\"}"; JSONObject jsonObject = JSONObject.parseObject(studentJsonString); System.out.println(jsonObject); }
输出结果如下图:
当然,我是以fastjson这个框架来演示的,你在实际工作中以公司使用的框架为主。