fastjson(转)
阅读原文时间:2023年07月08日阅读:2

博客地址 :http://blog.csdn.NET/shulianghan/article/details/41011605

fastjson 源码地址 :

-- GitHub : https://github.com/alibaba/fastjson ;

-- 示例源码 : https://github.com/alibaba/fastjson/wiki/Samples-DataBind ;

-- Jar下载 : http://sourceforge.net/projects/fastjson/ ;

总结 :

JavaBean <--> json 字符串 <--> JSONObject 互相转化

json 字符串 与 javaBean 对象 互相转化 :

-- json 字符串 -> Java Bean 对象 : JSON.parseObject(String text, Class clazz) 方法, 示例 - Student student = JSON.parseObject(json_student, Student.class);

-- Java Bean 对象 -> json 字符串 : JSON.toJSONString(Object object, boolean prettyFormat) 方法, 示例 - String format_json = JSON.toJSONString(student, true);

Java Bean 对象 与 JSONObject 对象 互相转化 :

-- Java Bean 对象 -> JSONObject 对象 : JSON.toJSON(Object javaObject) 方法, 示例 - JSONObject object = (JSONObject) JSON.toJSON(student_s);

-- JSONObject 对象 -> Java Bean 对象 (无直接方法实现) : JSON.parseObject(jsonObject.toString(), Class clazz) 方法, 先转成字符串, 再转成 Java Bean;

json 字符串 与 JSONObject 对象互相转化 :

-- json 字符串 -> JSONObject 对象 : JSON.parseObject(String text) 方法, 示例 - JSONObject object = JSON.parseObject(json_student);

-- JSONObject 对象 -> json 字符串 : JSONObject.toString() 方法, 示例 - object.toString();

Java Bean 对象 <--> json 字符串 <--> JSONArray 对象 互相转化

json 字符串 与 Java 集合 互相转化 :

-- json 字符串 -> Java 集合 : JSON.parseObject(String text, Class clazz) 方法, 示例 - List students = JSON.parseArray(json_array, Student.class);

-- Java 集合 -> json 字符串 : toJSONString(Object object, boolean prettyFormat) 方法, 示例 - String json_array = JSON.toJSONString(students, true);

Java 集合 与 JSONArray 对象 互相转化 :

-- Java 集合 -> JSONArray 对象 : JSON.toJSON(Object javaObject) 方法, 示例 - JSONArray array = (JSONArray) JSON.toJSON(students);

-- JSONArray 对象 -> Java 集合 (没有直接转化方法) : 先转成 json 字符串, 再转成 Java 集合;

json 字符串 与 JSONArray 对象 互相转化 :

-- json 字符串 -> JSONArray 对象 : JSON.parseArray(String text) 方法, 示例 - JSONArray array = JSON.parseArray(json_array);

-- JSONArray 对象 -> json 字符串 : jsonArray.toString() 方法;

一. JSON 简介

(1) 对象

对象简介 :

-- 格式 : 对象定义在 大括号 {} 中, 中间的项由 逗号 隔开, 每个项目都是 key : value  进行的;

-- 示例 : {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1};

-- 格式化后的 :

(2) 数组

数组简介 :

-- 数组格式 : 数组放在 中括号[] 中, 在 [] 中有 n 个 {} 元素, 每个元素用 逗号 隔开;

-- 数组示例 : [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] ;

-- 输出格式化后的数组 :

二. JSON 相关用法

(1) JSON.toJSONString(Object object)方法简介

JSON.toJSONString(Object object)方法简介 :

-- 方法定义 : public static final String toJSONString(Object object) ;

-- 方法作用 : 将 java bean 转为 json 字符串;

-- 方法位置 : String com.alibaba.fastjson.JSON.toJSONString(Object object) ;

-- 参数介绍 : Object object -> 要转换的实体类对象;

JSON.toJSONString(Object object, boolean prettyFormat)方法简介 :

-- 方法定义 : public static final String toJSONString(Object object, boolean prettyFormat) ;

-- 方法作用 : 将 java bean 转为 json 字符串, 并将 json 字符串格式化;

-- 方法位置String com.alibaba.fastjson.JSON.toJSONString(Object object, boolean prettyFormat) ;

-- 参数介绍 : Object object -> 要转换的实体类对象, boolean prettyFormat -> 是否将 json 字符串格式化 如果 false 与 上面的方法作用相同;

(2) JSON.toJSONString(Object object) 和 JSON.toJSONString(Object object, boolean prettyFormat)方法使用示例

JavaBean 类定义 :

main 函数代码 :

执行结果 :

-- 第一个结果 : 该结果没有经过格式化, 只是将 json 字符串输出;

-- 第二个结果 : 该结果按照 json 的格式进行格式化了;

(1) JSON.toJSON(Object javaObject) 方法简介

方法简介 :

-- 方法定义 : public static final Object toJSON(Object javaObject) ;

-- 方法作用 : 将 java bean 对象转为 JSONObject 对象, 或者将 集合 转为 JSONArray 对象;

-- 方法位置Object com.alibaba.fastjson.JSON.toJSON(Object javaObject) ;

-- 参数介绍 : Object javaObject -> java bean 对象 或者 集合;

关键代码解析 :

-- Java Bean 转 JSONObject : JSONObject object = (JSONObject) JSON.toJSON(student_s);

-- Java 集合 转 JSONArrayJSONArray array = (JSONArray) JSON.toJSON(students);

JSONOject 和 JSONArray 打印 : 这两种对象 打印本身, toString() 以及 toJSONString() 都是相同的结果, 详见下面的示例;

(2) 示例

Student 实体类 : 在 一. 1. (2) 中有定义, 直接使用该实体类即可;

Main() 示例 :

执行结果 :

(1) JSON.parseArray 方法简介

JSONArray parseArray(String text)方法简介 :

-- 方法定义 : public static final JSONArray parseArray(String text) ;

-- 方法作用 : 将 json 字符串转为 JSONArray 对象;

-- 方法位置 : JSONArray com.alibaba.fastjson.JSON.parseArray(String text) ;

-- 参数介绍 : String text -> json 字符串 ;

List parseArray(String text, Class clazz) 方法简介 :

-- 方法定义 : public static final List parseArray(String text, Class clazz) ;

-- 方法作用 : 将 json 字符串转为 List 集合;

-- 方法位置 :  List com.alibaba.fastjson.JSON.parseArray(String text, Class clazz) ;

-- 参数介绍 : String text -> json 字符串,  Class clazz -> 集合元素类型;

(2) 代码示例

Main() 代码 :

执行结果 :

(1) JSON.parseObject 方法简介

JSONObject parseObject(String text) 方法简介 :

-- 方法定义public static final JSONObject parseObject(String text);

-- 方法作用 : 将 json 字符串类型转化为 JSONObject 对象;

-- 方法位置 : JSONObject com.alibaba.fastjson.JSON.parseObject(String text);

-- 参数介绍 : String text -> json 字符串;

T parseObject(String text, Class clazz) 方法简介 :

-- 方法定义 : public static final T parseObject(String text, Class clazz);

-- 方法作用 : 将 json 字符串转为指定类型的 java bean 对象;

-- 方法位置 :  T com.alibaba.fastjson.JSON.parseObject(String text, Class clazz);

-- 参数介绍 : String text -> json 字符串Class clazz -> 要转化的 java bean 对象类型;

(2) 方法示例

Main() 方法 :

执行结果 :

(1) Object parse(String text) 方法简介

方法简介 :

-- 方法定义 : public static final Object parse(String text);

-- 方法作用 : 将 json 字符串转为 JSONObject 或者 JSONArray 对象;

-- 方法位置 : Object com.alibaba.fastjson.JSON.parse(String text);

-- 参数介绍 : String text -> json 字符串;

(2) 代码示例

Main() 方法 :

运行结果 :

三. JSONObject 相关用法

相关方法介绍 :

-- 获取 JSONObject 中元素 : 获取 String 就调用 jsonObject.getString("key"), 获取 boolean 调用 jsonObject.getBoolean("key"), 同理还可以获取其它类型的数据;

-- 向 JSONObject 中添加元素 : object.put("action", "fuck");

-- 向 JSONObject 中添加多个元素 : 将一个 Map 集合添加到 JSONObject 中, Map 集合的键必须是 String 类型;

-- 移除 JSONObject 中的属性 : jsonObject.remove("key"), 参数是 键;

-- 获取 JSONObject 中元素个数 : jsonObject.size();

Main() 函数代码 :

执行结果 :

四. 所有相关代码示例