JSON作为一种轻量级的数据交换格式,在我们日常的开发中使用十分广泛,就Java后端的开发工作中,JSON字符串与Java对象之间相互转换是常常遇到的操作。
虽然平时用到的挺多的,但是因为用于JSON处理的包有很多种,每种工具集的功能和使用方式也都不同,很容易在使用时造成混乱。
本文就结合
FastJson部分源码,简单整理了下常用的API及其使用示例
本文FastJson版本:1.2.54
根据FastJson源码大致整理出了这么一张转换图:

可以看到参与转换的对象主要有图中五种:
json字符串json对象json对象数组java对象java对象集合转化中用到的方法的方法名有如下几种:
JSONString ==> JSONObject/JSONArrayJSONString ==> JSONObject/JavaBeanJSONString ==> JSONObject/List<JavaBean>JavaBean/JSONObject ==> JSONStringJavaBean ==> JSONObjectJSONObject ==> JavaBean本文种仅列举
平常使用频率较高的API,其他的重载方法可参考源码,大都是对序列化/反序列化过程进行定制化。
实现了json对象(
JSONObject)>json字符串(JSONString),和Java对象(JavaBean)>json字符串(JSONString)的转化

从源码中可以看到这一方法被重载了多个,我们日常会用到的有如下几个:
| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| toJSONString(Object object):String | object: 需要进行序列化的对象javaBean或者JSONObject |
将对象序列化为json字符串 |
| toJSONString(Object object, boolean prettyFormat):String | prettyFormat:是否格式化输出json字符串 |
格式化输出json字符串 |
| toJSONString(Object object, SerializerFeature… features):String | features:序列化额外属性配置,非必填 |
根据指定属性进行序列化 |
| toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature… features):String | dateFormat:日期格式(yyyy-MM-dd) |
序列化时格式化日期 |
这些方法中最常用的即为:toJSONString(Object object)
实现了json字符串(
JSONString)>json对象(JSONObject),和json字符串(JSONString)>json对象数组(JSONArray)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parse(String text):Object | text:json字符串 |
反序列化json字符串 |
实现了json字符串(
JSONString)>json对象(JSONObject),和json字符串(JSONString)>Java对象(JavaBean)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parseObject(String text):JSONObject | text:json字符串 |
反序列化json字符串为Json对象 |
| parseObject(String text, Class |
clazz:指定反序列化后的类 |
json字符串转java对象 |
| parseObject(String text, TypeReference |
type:构造转化类型,features:反序列化额外属性 |
json字符串转java对象 |
实现了json字符串(
JSONString)==>json对象数组(JSONArray),和json字符串(JSONString)==>Java对象集合(List`)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parseArray(String text) :JSONArray | text:json字符串 |
将json字符串反序列化为JSON数组对象 |
| parseArray(String text, Class |
clazz:指定转化后的类 |
将json字符串反序列化为java对象集合 |

toJSON()实现了Java对象(
JavaBean)==>Json对象(JSONObject)的转换toJavaObject()实现了Json对象(
JSONObject)==>Java对象(JavaBean)的转换
| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| toJSON(Object javaObject):Object | javaObject:java对象 |
java对象转化为Json对象 |
| toJavaObject(JSON json, Class |
json:json对象,clazz:要转化的类型 |
json对象转化为java对象 |
Student学生类
1 | package com.larscheng.www.jsontest; |
测试类FastJsonTest.java代码如下:
1 | package com.larscheng.www.jsontest.fastJson; |
基本常用的方法都进行了代码测试,使用过程中可能会出现混淆的情况,但是只要记住了文中的转换图,相信应该会加深印象。
JSON作为一种轻量级的数据交换格式,在我们日常的开发中使用十分广泛,就Java后端的开发工作中,JSON字符串与Java对象之间相互转换是常常遇到的操作。
虽然平时用到的挺多的,但是因为用于JSON处理的包有很多种,每种工具集的功能和使用方式也都不同,很容易在使用时造成混乱。
本文就结合
FastJson部分源码,简单整理了下常用的API及其使用示例
本文FastJson版本:1.2.54
根据FastJson源码大致整理出了这么一张转换图:

可以看到参与转换的对象主要有图中五种:
json字符串json对象json对象数组java对象java对象集合转化中用到的方法的方法名有如下几种:
JSONString ==> JSONObject/JSONArrayJSONString ==> JSONObject/JavaBeanJSONString ==> JSONObject/List<JavaBean>JavaBean/JSONObject ==> JSONStringJavaBean ==> JSONObjectJSONObject ==> JavaBean本文种仅列举
平常使用频率较高的API,其他的重载方法可参考源码,大都是对序列化/反序列化过程进行定制化。
实现了json对象(
JSONObject)>json字符串(JSONString),和Java对象(JavaBean)>json字符串(JSONString)的转化

从源码中可以看到这一方法被重载了多个,我们日常会用到的有如下几个:
| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| toJSONString(Object object):String | object: 需要进行序列化的对象javaBean或者JSONObject |
将对象序列化为json字符串 |
| toJSONString(Object object, boolean prettyFormat):String | prettyFormat:是否格式化输出json字符串 |
格式化输出json字符串 |
| toJSONString(Object object, SerializerFeature… features):String | features:序列化额外属性配置,非必填 |
根据指定属性进行序列化 |
| toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature… features):String | dateFormat:日期格式(yyyy-MM-dd) |
序列化时格式化日期 |
这些方法中最常用的即为:toJSONString(Object object)
实现了json字符串(
JSONString)>json对象(JSONObject),和json字符串(JSONString)>json对象数组(JSONArray)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parse(String text):Object | text:json字符串 |
反序列化json字符串 |
实现了json字符串(
JSONString)>json对象(JSONObject),和json字符串(JSONString)>Java对象(JavaBean)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parseObject(String text):JSONObject | text:json字符串 |
反序列化json字符串为Json对象 |
| parseObject(String text, Class |
clazz:指定反序列化后的类 |
json字符串转java对象 |
| parseObject(String text, TypeReference |
type:构造转化类型,features:反序列化额外属性 |
json字符串转java对象 |
实现了json字符串(
JSONString)==>json对象数组(JSONArray),和json字符串(JSONString)==>Java对象集合(List`)的转化

| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| parseArray(String text) :JSONArray | text:json字符串 |
将json字符串反序列化为JSON数组对象 |
| parseArray(String text, Class |
clazz:指定转化后的类 |
将json字符串反序列化为java对象集合 |

toJSON()实现了Java对象(
JavaBean)==>Json对象(JSONObject)的转换toJavaObject()实现了Json对象(
JSONObject)==>Java对象(JavaBean)的转换
| 方法 : 返回值 | 参数说明 | 功能 |
|---|---|---|
| toJSON(Object javaObject):Object | javaObject:java对象 |
java对象转化为Json对象 |
| toJavaObject(JSON json, Class |
json:json对象,clazz:要转化的类型 |
json对象转化为java对象 |
Student学生类
1 | package com.larscheng.www.jsontest; |
测试类FastJsonTest.java代码如下:
1 | package com.larscheng.www.jsontest.fastJson; |
基本常用的方法都进行了代码测试,使用过程中可能会出现混淆的情况,但是只要记住了文中的转换图,相信应该会加深印象。