FastJson中String、Json、JavaBean
本文来源为:https://www.cnblogs.com/cdf-opensource-007/p/7106018.html
FastJson提供的三个主要类
JSON
fastJson 的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
JSONObject
fastJson提供的json对象。
JSONArray
fastJson提供json数组对象。
JSONObject与JSONArray
SONObject和JSONArray继承了JSON,
我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。
同样我们可以把JSONArray当做一个List,可以把JSONArray看成JSONObject对象的一个集合。
JsonString转成JSONObject 代码示例
1. 简单json字符串转化成JSONObject
String jsonStr = "{\"name\":\"wang\",\"age\":\"18\"}";
// 1. 简单json字符串转化成JSONObject
String jsonStr = "{\"name\":\"wang\",\"age\":\"18\"}";
FastJsonUtil.jsonStrToJSONObject(jsonStr);
// 以下即jsonStrToJSONObject方法()
/*
* 将简单的json字符串转化成JSONObject对象
* */
public static void jsonStrToJSONObject(String jsonStr){
System.out.println("将简单的json字符串转化成JSONObject对象");
// 1. 对于简单的json字符串,直接进行调用JSON的parseObject方法即可
JSONObject jsonObject = JSON.parseObject(jsonStr);
// 2. 需要取出相应的数据,直接调用方法 JSONObject getString()方法即可
String name = jsonObject.getString("name");
String age = jsonObject.getString("age");
System.out.println("name:"+ name + ",age:" + age);
}
2. 将数组类型的json字符串转化成JSONObject
String jsonStrArr = "[{\"name\":\"lily\",\"age\":14},{\"name\":\"lucy\",\"age\":15}]";
// 2. 将数组类型的json字符串转化成JSONObject
String jsonStrArr = "[{\"name\":\"lily\",\"age\":14},{\"name\":\"lucy\",\"age\":15}]";
FastJsonUtil.jsonStrArrToJSONObject(jsonStrArr);
/*
* 将数组类型的json字符串转化成JSONObject对象
* */
public static void jsonStrArrToJSONObject(String jsonStrArr){
System.out.println("将数组类型的json字符串转化成JSONObject对象");
// 1. 调用JSON的parseArray方法进行转化
JSONArray jsonArray = JSON.parseArray(jsonStrArr);
// 2. 遍历得到jsonArray的所有项
for(int i = 0;i<jsonArray.size();i++){
// 3.通过调用getJSONObject方法来得到jsonArray的每一项
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
}
}
3. 将包含多种类型的json字符串转化成JSONObject对象
String jsonComplex = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
// 3.将复杂类型的json字符串转化成JSONObject对象
String jsonComplex = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
FastJsonUtil.jsonStrComplexToJSONObject(jsonComplex);
public static void jsonStrComplexToJSONObject(String jsonStrComplex){
System.out.println("将包含多种类型的json字符串转化成JSONObject对象");
// 1. 对于复杂的json字符串,首先同样是进行解析成JSONObject,然后再进行“分层”解析
JSONObject jsonObject = JSON.parseObject(jsonStrComplex);
String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students");
System.out.println("teacherName:" + teacherName);
System.out.println("teacherAge:" + teacherAge);
System.out.println("course:" + course);
System.out.println("students:" + students);
}
JSONObject转化成JavaBean 代码示例
1. 简单json字符串转化成JavaBean
调用JSON.parseObject(jsonStr,实体类.class)
String jsonStr = "{\"name\":\"wang\",\"age\":\"18\"}";
实体类
package fastJson.pojo;
public class Person {
private String name;
private String age;
public Person(String name, String age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
// 将字符串映射到实例类
FastJsonUtil.jsonStrToJavaBean(jsonStr);
/*
* 对于简单类型的json字符串映射到javaBean上
* */
public static void jsonStrToJavaBean(String json){
// 调用JSON.parseObject(jsonStr,实体类.class)
Person person = JSON.parseObject(json, Person.class);
System.out.println(person);
}
2. 数组类型的json字符串转化成javaBean
String jsonStrArr = "[{\"name\":\"lily\",\"age\":14},{\"name\":\"lucy\",\"age\":15}]";
实体类依然为Person
// 将字符串映射到实体类
FastJsonUtil.jsonStrArrToJavaBean(jsonStrArr);
/*
* 对于数组类型的json字符串映射到javaBean上
* */
public static void jsonStrArrToJavaBean(String jsonStrArr){
// 调用方法parseArray(jsonStrArr,list集合元素类型.class)
List<Person> personList = JSON.parseArray(jsonStrArr, Person.class);
// 迭代器遍历
Iterator<Person> iterator = personList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
3. 复杂类型json字符串转化成JavaBean
String jsonComplex = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
实体类
Person
package fastJson.pojo;
public class Person {
private String name;
private String age;
public Person(String name, String age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
Course
package fastJson.pojo;
public class Course {
private String courseName;
private Integer code;
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
@Override
public String toString() {
return "Course{" +
"courseName='" + courseName + '\'' +
", code=" + code +
'}';
}
}
Teacher
package fastJson.pojo;
import java.util.List;
public class Teacher {
private String teacherName;
private Integer teacherAge;
private Course course;
protected List<Person> students;
public Teacher() {
}
public Teacher(String teacherName, Integer teacherAge, Course course, List<Person> students) {
this.teacherName = teacherName;
this.teacherAge = teacherAge;
this.course = course;
this.students = students;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public Integer getTeacherAge() {
return teacherAge;
}
public void setTeacherAge(Integer teacherAge) {
this.teacherAge = teacherAge;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public List<Person> getStudents() {
return students;
}
public void setStudents(List<Person> students) {
this.students = students;
}
@Override
public String toString() {
return "Teacher{" +
"teacherName='" + teacherName + '\'' +
", teacherAge=" + teacherAge +
", course=" + course +
", students=" + students +
'}';
}
}
FastJsonUtil.jsonStrComplexToJavaBean(jsonComplex);
/*
* 将复杂类型的json字符串映射到JavaBean上
* */
public static void jsonStrComplexToJavaBean(String jsonStrComplex){
Teacher teacher = JSON.parseObject(jsonStrComplex, Teacher.class);
System.out.println(teacher);
}
4. 总结
通过调用JSON的parseObject方法时候,传递需要映射的实体类的.class对象进行映射即可
补充
1,对于**JSON对象(即JSONObject)**与JSON格式字符串的转换可以直接用 **toJSONString()**这个方法。
2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);
3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。