FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
一.pom.xml配置jar包
<!-- Json依赖架包下载 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
二.定义三个json格式的字符串,作为我们的数据源
//json字符串-简单对象型 private static final String JSON1= "{"studentName":"lily","studentAge":12}"; //json字符串-数组类型 private static final String JSON2= "[{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]"; //复杂格式json字符串 private static final String JSON3= "{"teacherName":"crystall","teacherAge":27,"course":{"courseName":"english","code":1270},"students":[{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]}";
1.JSON格式字符串与JSON对象之间的转换
1.1-json字符串-简单对象型与JSONObject之间的转换
JSONObject jsonObject=JSON.parseObject(JSON1);
//JSONObject jsonObject1=JSONObject.parseObject(JSON1); //因为JSONObject继承了JSON,所以这样也是可以的
1.2-json字符串-数组类型与JSONArray之间的转换
JSONArray jsonArray=JSON.parseArray(JSON2);
//JSONArray jsonArray1=JSONArray.parseArray(JSON2);//因为JSONArray继承了JSON,所以这样也是可以的,之后再遍历
//遍历方式1
int size = jsonArray.size();
for (int i = 0; i < size; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i); System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
//遍历方式2
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj; System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
1.3-复杂json格式字符串与JSONObject之间的转换
JSONObject jsonObject=JSON.parseObject(JSON3);
//JSONObject jsonObject1=JSONObject.parseObject(JSON3);//因为JSONObject继承了JSON,所以这样也是可以的
2.JSON格式字符串与java对象之间的转换。
2.1-json字符串-简单对象型与java对象之间的转换
Student student = JSON.parseObject(JSON1, new TypeReference<Student>() {});
//Student student1 = JSONObject.parseObject(JS ON1, new TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的
2.2-json字符串-数组类型与javaBean之间的转换
ArrayList<Student> students=JSON.parseObject(JSON2, new TypeReference<ArrayList<Student>>() {});
//ArrayList<Student> students1=JSONArray.parseObject(JSON2, new TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的,之后再解析
for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
2.3-复杂json格式字符串与与javaBean之间的转换
Teacher teacher = JSON.parseObject(JSON3, new TypeReference<Teacher>() {});
//Teacher teacher1 = JSON.parseObject(JSON3, new TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
List<Student> students = teacher.getStudents();在for解析就可以获取
3.java对象转换JSON格式字符串。
//java对象转换为json对象
JSONObject jsonObjects=JSONObject.toJSON(User);
//json对象转换为(json)字符串
String json=JSON.toJSONString(jsonObjects);
//上边两行可以合并为一行。java对象转换为json对象在转换为(json)字符串
String json=JSON.toJSONString(JSONObject.toJSON(User));
4.JSON格式字符串转换java对象。
//json对象转换为java对象
user= JSONObject.parseObject(json1, new TypeReference<User>(){} );
此外的:
1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。
2,java对象与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);
3,java对象与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。