Java对象转换成Json的时候出现信息丢失问题:
其实准确的说不叫信息丢失,只是没有完全序列化:打印出来就成了如下信息:
"$ref": "$.collegeBeanList[0].majorBeanList[0].teacherBeanList[0]"
通过fastjson得到的Json格式:
{
"collegeBeanList": [
{
"college_code": "CNCQ0001-CQU000",
"college_id": 0,
"college_name": "重庆大学电子工程学院",
"collgee_description": "这是重庆大学的电子工程学院",
"majorBeanList": [
{
"major_code": "CNCQ0001-CQU001-000",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"major_id": 0,
"major_name": "重庆大学电子工程学院的自动化专业",
"teacherBeanList": [
{
"teacher_age": 35,
"teacher_code": "CNCQ0001-CQU001-001-00",
"teacher_description": "重大自动化专业的刘老师",
"teacher_id": 0,
"teacher_name": "刘老师"
},
{
"teacher_age": 35,
"teacher_code": "CNCQ0001-CQU001-001-01",
"teacher_description": "重大自动化专业的刘老师",
"teacher_id": 1,
"teacher_name": "刘老师"
}
]
},
{
"major_code": "CNCQ0001-CQU001-001",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"major_id": 1,
"major_name": "重庆大学电子工程学院的自动化专业",
"teacherBeanList": [
{
"$ref": "$.collegeBeanList[0].majorBeanList[0].teacherBeanList[0]"
},
{
"$ref": "$.collegeBeanList[0].majorBeanList[0].teacherBeanList[1]"
}
]
}
]
},
{
"college_code": "CNCQ0001-CQU001",
"college_id": 1,
"college_name": "重庆大学电子工程学院",
"collgee_description": "这是重庆大学的电子工程学院",
"majorBeanList": [
{
"$ref": "$.collegeBeanList[0].majorBeanList[0]"
},
{
"$ref": "$.collegeBeanList[0].majorBeanList[1]"
}
]
}
],
"u_code": "CNCQ0001",
"u_description": "这是重庆最好的大学",
"u_id": 1,
"u_name": "重庆大学"
}
通过Jackson得到的Json格式:
{
"u_id": 1,
"u_code": "CNCQ0001",
"u_name": "重庆大学",
"u_description": "这是重庆最好的大学",
"collegeBeanList": [
{
"college_id": 0,
"college_code": "CNCQ0001-CQU000",
"college_name": "重庆大学电子工程学院",
"collgee_description": "这是重庆大学的电子工程学院",
"majorBeanList": [
{
"major_id": 0,
"major_code": "CNCQ0001-CQU001-000",
"major_name": "重庆大学电子工程学院的自动化专业",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"teacherBeanList": [
{
"teacher_id": 0,
"teacher_code": "CNCQ0001-CQU001-001-00",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
},
{
"teacher_id": 1,
"teacher_code": "CNCQ0001-CQU001-001-01",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
}
]
},
{
"major_id": 1,
"major_code": "CNCQ0001-CQU001-001",
"major_name": "重庆大学电子工程学院的自动化专业",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"teacherBeanList": [
{
"teacher_id": 0,
"teacher_code": "CNCQ0001-CQU001-001-00",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
},
{
"teacher_id": 1,
"teacher_code": "CNCQ0001-CQU001-001-01",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
}
]
}
]
},
{
"college_id": 1,
"college_code": "CNCQ0001-CQU001",
"college_name": "重庆大学电子工程学院",
"collgee_description": "这是重庆大学的电子工程学院",
"majorBeanList": [
{
"major_id": 0,
"major_code": "CNCQ0001-CQU001-000",
"major_name": "重庆大学电子工程学院的自动化专业",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"teacherBeanList": [
{
"teacher_id": 0,
"teacher_code": "CNCQ0001-CQU001-001-00",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
},
{
"teacher_id": 1,
"teacher_code": "CNCQ0001-CQU001-001-01",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
}
]
},
{
"major_id": 1,
"major_code": "CNCQ0001-CQU001-001",
"major_name": "重庆大学电子工程学院的自动化专业",
"major_description": "这是重庆大学的电子工程学院的自动化专业",
"teacherBeanList": [
{
"teacher_id": 0,
"teacher_code": "CNCQ0001-CQU001-001-00",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
},
{
"teacher_id": 1,
"teacher_code": "CNCQ0001-CQU001-001-01",
"teacher_name": "刘老师",
"teacher_age": 35,
"teacher_description": "重大自动化专业的刘老师"
}
]
}
]
}
]
}
下面是数据生成:
package test.com.ldc.json.practice;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import test.com.ldc.json.bean.CollegeBean;
import test.com.ldc.json.bean.MajorBean;
import test.com.ldc.json.bean.TeacherBean;
import test.com.ldc.json.bean.UniversityBean;
public class GenerateData {
/**
* 产生大学University对象
*
* @return
*/
public static UniversityBean generateUniversity() {
UniversityBean universityBean = new UniversityBean(1, "CNCQ0001", "重庆大学", "这是重庆最好的大学", null);
return universityBean;
}
/**
* 产生学院College对象
*
* @return
*/
public static CollegeBean generateCollege() {
CollegeBean collegeBean = new CollegeBean(1, "CNCQ0001-CQU001", "重庆大学电子工程学院", "这是重庆大学的电子工程学院", null);
return collegeBean;
}
/**
* 产生专业Major对象
*
* @return
*/
public static MajorBean generateMajor() {
MajorBean majorBean = new MajorBean(1, "CNCQ0001-CQU001-001", "重庆大学电子工程学院的自动化专业", "这是重庆大学的电子工程学院的自动化专业", null);
return majorBean;
}
/**
* 产生教师Teacher对象
*
* @return
*/
public static TeacherBean generateTeacher() {
TeacherBean teacherBean = new TeacherBean(1, "CNCQ0001-CQU001-001-01", "刘老师", 35, "重大自动化专业的刘老师");
return teacherBean;
}
/**
* 将上面的各项数据关联起来
*
* @return
*/
public static UniversityBean generateAssociateData() {
UniversityBean universityBean = generateUniversity();
List collegeBeanList = new ArrayList();
List majorBeanList = new ArrayList();
List teacherBeanList = new ArrayList();
int college_num = 2;
int major_num = 2;
int teacher_num = 2;
for (int teacher = 0; teacher < teacher_num; teacher++) {
TeacherBean teacherBean = generateTeacher();
teacherBean.setTeacher_id(teacher);
teacherBean.setTeacher_code("CNCQ0001-CQU001-001-0" + teacher);
teacherBeanList.add(teacherBean);
}
for (int major = 0; major < major_num; major++) {
MajorBean majorBean = generateMajor();
majorBean.setMajor_id(major);
majorBean.setMajor_code("CNCQ0001-CQU001-00" + major);
majorBean.setTeacherBeanList(teacherBeanList);
majorBeanList.add(majorBean);
}
for (int college = 0; college < college_num; college++) {
CollegeBean collegeBean = generateCollege();
collegeBean.setCollege_id(college);
collegeBean.setCollege_code("CNCQ0001-CQU00" + college);
collegeBean.setMajorBeanList(majorBeanList);
collegeBeanList.add(collegeBean);
}
universityBean.setCollegeBeanList(collegeBeanList);
return universityBean;
}
/**
* 通过fastjson生成Json对象
*
* @return
*/
public static String UniversityToJson_ByFastJson() {
Object object = generateAssociateData();
String university_json = JSON.toJSONString(object);
return university_json;
}
/**
* 通过Jackson生成Json对象
*
* @return
*/
public static String UniversityToJson_ByJackson() {
Object object = generateAssociateData();
ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return objectMapper.toString();
}
}