1. 文章引言
我们在开发的过程中,难免会到如下转换的情况:
在分析这三种类型的相互转化之前,我们需要引入相关的jar
包:
1.1 框架引用
- 如果你使用的是
fastjson
,可引入如下jar
包:
<dependency>
<groupId>***.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
- 如果你使用的是
orgJson
,可引入如下jar
包:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
- 如果你使用的是
Jackson
,可引入如下jar
包:
<properties>
<java.version>1.8</java.version>
<jackson.version>2.10.1</jackson.version>
</properties>
<dependency>
<groupId>***.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>***.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>***.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
而我在开发中常用的是fastjson
,这是阿里巴巴开源的框架,其开原地址为:https://github.***/alibaba/fastjson
1.2 创建java实体对象
同时,以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);
}
}
2. java对象转JSONObject和JSONString
2.1 java对象转JSONObject
/**
* 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);
}
输出结果如下图:
2.2 java对象转JSONString
/**
* 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);
}
输出结果如下图:
3. JSONObject转java对象和JSONString
3.1 JSONObject转java对象
/**
* 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);
}
输出结果如下图:
3.2 JSONObject转JSONString
/**
* 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);
}
输出结果如下图:
4. JSONString转JSONObject和java对象
4.1 JSONString转java对象
/**
* 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);
}
输出结果如下图:
4.2 JSONString转JSONObject
/**
* 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);
}
输出结果如下图:
5. 文末总结
当然,我是以fastjson
这个框架来演示的,你在实际工作中以公司使用的框架为主。