本文主要是介绍json格式与bean对象互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
采用fastjson包。
JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
JSONObject:fastJson提供的json对象。
JSONArray:fastJson提供json数组对象。
1. 采用字符串转Json对象使用:JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR); JSON_OBJ_STR为json格式字符串。
2. json对象转字符串使用:jsonObject.toJSONString()
3. 字符串转bean对象:Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});
对于TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {}
4.字符串转List对象:
ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
5.bean对象转json字符串: String course2 = JSON.toJSONString(course);
6.完整案例:
package com.ithiema.jedis;import java.util.ArrayList;
import java.util.List;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.ithiema.demo.Course;
import com.ithiema.demo.Student;
import com.ithiema.demo.Teacher;public class JsonTest {// json字符串-简单对象型private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";// json字符串-数组类型private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";// 复杂格式json字符串private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";/*** json字符串-简单对象型与JSONObject之间的转换 prase vt:解析*/public static void testJSONStrToJSONObject() {JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);// JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR);// //因为JSONObject继承了JSON,所以这样也是可以的System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}/*** json字符串-数组类型与JSONArray之间的转换*/public static void testJSONStrToJSONArray() {JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);// JSONArray jsonArray1 =// JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的// 遍历方式1int size = jsonArray.size();for (int i = 0; i < size; i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}// 遍历方式2for (Object obj : jsonArray) {JSONObject jsonObject = (JSONObject) obj;System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}}/*** 复杂json格式字符串与JSONObject之间的转换*/public static void testComplexJSONStrToJSONObject() {JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);// JSONObject jsonObject1 =// JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的String teacherName = jsonObject.getString("teacherName");Integer teacherAge = jsonObject.getInteger("teacherAge");JSONObject course = jsonObject.getJSONObject("course");JSONArray students = jsonObject.getJSONArray("students");}/*** json字符串-简单对象与JavaBean_obj之间的转换*/public static void testJSONStrToJavaBeanObj() {Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});// Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new// TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的System.out.println(student.getStudentName() + ":" + student.getStudentAge());}/*** json字符串-数组类型与JavaBean_List之间的转换*/public static void testJSONStrToJavaBeanList() {ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});// ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new// TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的for (Student student : students) {System.out.println(student.getStudentName() + ":" + student.getStudentAge());}}/*** 复杂json格式字符串与JavaBean_obj之间的转换*/public static void testComplexJSONStrToJavaBean() {Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});// Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new// TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的String teacherName = teacher.getTeacherName();Integer teacherAge = teacher.getTeacherAge();Course course = teacher.getCourse();List<Student> students = teacher.getStudents();String course2 = JSON.toJSONString(course);System.out.println(course2);}/** 1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。* * 2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);* * 3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。*/public static void main(String[] args) {testComplexJSONStrToJavaBean();}
}
总结:1.json字符串 转 对象:JSON.parseObject(“字符串”,new TypeReference<类名>(){});
2.对象转json字符串:jsonObject.toJSONstring();
补充:json对象 JSONObject 获取 内部的value时,用get+“类名”()得到。如getString("name");
用于redis存对象一般都将对象转为json字符串存入
这篇关于json格式与bean对象互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!