分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

高性能JSON框架之FastJson的简单使用

发布时间:2023-09-06 01:52责任编辑:熊小新关键词:暂无标签

1.前言

1.1.FastJson的介绍:

JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson

1.2.FastJson的特点:

1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast 
2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum) 
3.零依赖(没有依赖其它任何类库)

1.3.FastJson的简单说明:

FastJson对于json格式字符串的解析主要用到了下面三个类: 
1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换 
2.JSONObject:fastJson提供的json对象 
3.JSONArray:fastJson提供json数组对象

2.FastJson的用法

首先定义三个json格式的字符串

//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}]}";

2.1.JSON格式字符串与JSON对象之间的转换

2.1.1.json字符串-简单对象型与JSONObject之间的转换

/** * json字符串-简单对象型到JSONObject的转换 */@Testpublic void testJSONStrToJSONObject() { ???JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR); ???System.out.println("studentName: ?" + jsonObject.getString("studentName") + ":" + " ?studentAge: ?" ???????????+ jsonObject.getInteger("studentAge"));}/** * JSONObject到json字符串-简单对象型的转换 */@Testpublic void testJSONObjectToJSONStr() { ???//已知JSONObject,目标要转换为json字符串 ???JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR); ???// 第一种方式 ???String jsonString = JSONObject.toJSONString(jsonObject); ???// 第二种方式 ???//String jsonString = jsonObject.toJSONString(); ???System.out.println(jsonString);}

2.1.2.json字符串(数组类型)与JSONArray之间的转换

/** * json字符串-数组类型到JSONArray的转换 */@Testpublic void testJSONStrToJSONArray() { ???JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR); ???//遍历方式1 ???int size = jsonArray.size(); ???for (int i = 0; i < size; i++) { ???????JSONObject jsonObject = jsonArray.getJSONObject(i); ???????System.out.println("studentName: ?" + jsonObject.getString("studentName") + ":" + " ?studentAge: ?" ???????????????+ jsonObject.getInteger("studentAge")); ???} ???//遍历方式2 ???for (Object obj : jsonArray) { ???????JSONObject jsonObject = (JSONObject) obj; ???????System.out.println("studentName: ?" + jsonObject.getString("studentName") + ":" + " ?studentAge: ?" ???????????????+ jsonObject.getInteger("studentAge")); ???}}/** * JSONArray到json字符串-数组类型的转换 */@Testpublic void testJSONArrayToJSONStr() { ???//已知JSONArray,目标要转换为json字符串 ???JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR); ???//第一种方式 ???String jsonString = JSONArray.toJSONString(jsonArray); ???// 第二种方式 ???//String jsonString = jsonArray.toJSONString(jsonArray); ???System.out.println(jsonString);}

2.1.3.复杂json格式字符串与JSONObject之间的转换

/** * 复杂json格式字符串到JSONObject的转换 */@Testpublic void testComplexJSONStrToJSONObject() { ???JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR); ???String teacherName = jsonObject.getString("teacherName"); ???Integer teacherAge = jsonObject.getInteger("teacherAge"); ???System.out.println("teacherName: ?" + teacherName + " ??teacherAge: ?" + teacherAge); ???JSONObject jsonObjectcourse = jsonObject.getJSONObject("course"); ????//获取JSONObject中的数据 ???String courseName = jsonObjectcourse.getString("courseName"); ???Integer code = jsonObjectcourse.getInteger("code"); ???System.out.println("courseName: ?" + courseName + " ??code: ?" + code); ???JSONArray jsonArraystudents = jsonObject.getJSONArray("students"); ???//遍历JSONArray ???for (Object object : jsonArraystudents) { ???????JSONObject jsonObjectone = (JSONObject) object; ???????String studentName = jsonObjectone.getString("studentName"); ???????Integer studentAge = jsonObjectone.getInteger("studentAge"); ???????System.out.println("studentName: ?" + studentName + " ??studentAge: ?" + studentAge); ???}}/** * 复杂JSONObject到json格式字符串的转换 */@Testpublic void testJSONObjectToComplexJSONStr() { ??//复杂JSONObject,目标要转换为json字符串 ???JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR); ???//第一种方式 ???//String jsonString = JSONObject.toJSONString(jsonObject); ???//第二种方式 ???String jsonString = jsonObject.toJSONString(); ???System.out.println(jsonString);}

2.2.JSON格式字符串与javaBean之间的转换

2.2.1.json字符串-简单对象型与javaBean之间的转换

/** * json字符串-简单对象到JavaBean之间的转换 */@Testpublic void testJSONStrToJavaBeanObj() { ???//第一种方式 ???JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR); ???String studentName = jsonObject.getString("studentName"); ???Integer studentAge = jsonObject.getInteger("studentAge"); ???//Student student = new Student(studentName, studentAge); ???//第二种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???//Student student = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {}); ???//第三种方式,使用Gson的思想 ???Student student = JSONObject.parseObject(JSON_OBJ_STR, Student.class); ???System.out.println(student);}/** * JavaBean到json字符串-简单对象的转换 */@Testpublic void testJavaBeanObjToJSONStr() { ???Student student = new Student("lily", 12); ???String jsonString = JSONObject.toJSONString(student); ???System.out.println(jsonString);}

2.2.2.json字符串-数组类型与javaBean之间的转换

/** * json字符串-数组类型到JavaBean_List的转换 */@Testpublic void testJSONStrToJavaBeanList() { ???//第一种方式 ???JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR); ???//遍历JSONArray ???List<Student> students = new ArrayList<Student>(); ???Student student = null; ???for (Object object : jsonArray) { ???????JSONObject jsonObjectone = (JSONObject) object; ???????String studentName = jsonObjectone.getString("studentName"); ???????Integer studentAge = jsonObjectone.getInteger("studentAge"); ???????student = new Student(studentName,studentAge); ???????students.add(student); ???} ???System.out.println("students: ?" + students); ???//第二种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???List<Student> studentList = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {}); ???System.out.println("studentList: ?" + studentList); ???//第三种方式,使用Gson的思想 ???List<Student> studentList1 = JSONArray.parseArray(JSON_ARRAY_STR, Student.class); ???System.out.println("studentList1: ?" + studentList1);}/** * JavaBean_List到json字符串-数组类型的转换 */@Testpublic void testJavaBeanListToJSONStr() { ???Student student = new Student("lily", 12); ???Student studenttwo = new Student("lucy", 15); ???List<Student> students = new ArrayList<Student>(); ???students.add(student); ???students.add(studenttwo); ???String jsonString = JSONArray.toJSONString(students); ???System.out.println(jsonString);}

2.2.3.复杂json格式字符串与与javaBean之间的转换

/** * 复杂json格式字符串到JavaBean_obj的转换 */@Testpublic void testComplexJSONStrToJavaBean(){ ???//第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {}); ???System.out.println(teacher); ???//第二种方式,使用Gson思想 ???Teacher teacher1 = JSONObject.parseObject(COMPLEX_JSON_STR, Teacher.class); ???System.out.println(teacher1);}/** * 复杂JavaBean_obj到json格式字符串的转换 */@Testpublic void testJavaBeanToComplexJSONStr(){ ???//已知复杂JavaBean_obj ???Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {}); ???String jsonString = JSONObject.toJSONString(teacher); ???System.out.println(jsonString);}

2.3.javaBean与json对象间的之间的转换

2.3.1.简单javaBean与json对象之间的转换

/** * 简单JavaBean_obj到json对象的转换 */@Testpublic void testJavaBeanToJSONObject(){ ???//已知简单JavaBean_obj ???Student student = new Student("lily", 12); ???//方式一 ???String jsonString = JSONObject.toJSONString(student); ???JSONObject jsonObject = JSONObject.parseObject(jsonString); ???System.out.println(jsonObject); ???//方式二 ???JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(student); ???System.out.println(jsonObject1);}/** * 简单json对象到JavaBean_obj的转换 */@Testpublic void testJSONObjectToJavaBean(){ ???//已知简单json对象 ???JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR); ???//第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???Student student = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Student>() {}); ???System.out.println(student); ???//第二种方式,使用Gson的思想 ???Student student1 = JSONObject.parseObject(jsonObject.toJSONString(), Student.class); ???System.out.println(student1);}

2.3.2.JavaList与JsonArray之间的转换

/** * JavaList到JsonArray的转换 */@Testpublic void testJavaListToJsonArray() { ???//已知JavaList ???Student student = new Student("lily", 12); ???Student studenttwo = new Student("lucy", 15); ???List<Student> students = new ArrayList<Student>(); ???students.add(student); ???students.add(studenttwo); ???//方式一 ???String jsonString = JSONArray.toJSONString(students); ???JSONArray jsonArray = JSONArray.parseArray(jsonString); ???System.out.println(jsonArray); ???//方式二 ???JSONArray jsonArray1 = (JSONArray) JSONArray.toJSON(students); ???System.out.println(jsonArray1);}/** * JsonArray到JavaList的转换 */@Testpublic void testJsonArrayToJavaList() { ???//已知JsonArray ???JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR); ???//第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???ArrayList<Student> students = JSONArray.parseObject(jsonArray.toJSONString(), ???????????new TypeReference<ArrayList<Student>>() {}); ???System.out.println(students); ???//第二种方式,使用Gson的思想 ???List<Student> students1 = JSONArray.parseArray(jsonArray.toJSONString(), Student.class); ???System.out.println(students1);}

2.3.3.复杂JavaBean_obj与json对象之间的转换

/** * 复杂JavaBean_obj到json对象的转换 */@Testpublic void testComplexJavaBeanToJSONObject() { ???//已知复杂JavaBean_obj ???Student student = new Student("lily", 12); ???Student studenttwo = new Student("lucy", 15); ???List<Student> students = new ArrayList<Student>(); ???students.add(student); ???students.add(studenttwo); ???Course course = new Course("english", 1270); ???Teacher teacher = new Teacher("crystall", 27, course, students); ???//方式一 ???String jsonString = JSONObject.toJSONString(teacher); ???JSONObject jsonObject = JSONObject.parseObject(jsonString); ???System.out.println(jsonObject); ???//方式二 ???JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(teacher); ???System.out.println(jsonObject1);}/** * 复杂json对象到JavaBean_obj的转换 */@Testpublic void testComplexJSONObjectToJavaBean() { ???//已知复杂json对象 ???JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR); ???//第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类 ???Teacher teacher = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Teacher>() {}); ???System.out.println(teacher); ???//第二种方式,使用Gson的思想 ???Teacher teacher1 = JSONObject.parseObject(jsonObject.toJSONString(), Teacher.class); ???System.out.println(teacher1);}

3.源码

本篇博客的源码都在我的Github上,FastJsonDemo,欢迎大家Fork and Star!

转自:https://segmentfault.com/a/1190000011212806

高性能JSON框架之FastJson的简单使用

原文地址:https://www.cnblogs.com/hzdzkjdxygz/p/8995249.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved