前言
在项目开发中,需要跟前端进行联调的时候,我们常遇到Json转换问题,Json转对象、对象转Json等问题。下面将介绍解决该问题其中的一种工具,阿里巴巴开源的Json处理工具FashJson。
一、FastJSON简介
FastJSOn是阿里巴巴开源的JSON处理工具,大家可以尝试使用一下。
官网地址:http://code.alibabatech.com/wiki/display/FastJSON/Overview
Fastjson是一个json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson。
功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
无依赖,能够直接运行在Java SE 5.0以上版本
支持Android。
开源 (Apache 2.0)
二、使用步骤
1.安装Maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.36</version>
</dependency>
2.简单使用
代码如下(示例):
//1.序列化,Json字符串
Stu stu = new Stu();
stu.setName("xiao");
stu.setSno(11);
String jsonString = JSON.toJSONString(stu);
//2.反序列化,Json转对象
Stu stu1 = JSON.parseObject(jsonString, Stu.class);
List<Stu> list=new ArrayList<>();
list.add(stu);
//3.数组转换成字符串
String jsonString1 = JSONArray.toJSONString(list);
//4.字符串转换成为数组
List<Stu> stus = JSONArray.parseArray(jsonString1, Stu.class);
主要这里方法调用比较简单,就不详细介绍
3.SerializerFeature属性的处理
SerializerFeature属性
public enum SerializerFeature {
QuoteFieldNames,
UseSingleQuotes,
WriteMapNullValue,
WriteEnumUsingToString,
WriteEnumUsingName,
UseISO8601DateFormat,
WriteNullListAsEmpty,
WriteNullStringAsEmpty,
WriteNullNumberAsZero,
WriteNullBooleanAsFalse,
SkipTransientField,
SortField,
/** @deprecated */
@Deprecated
WriteTabAsSpecial,
PrettyFormat,
WriteClassName,
DisableCircularReferenceDetect,
WriteSlashAsSpecial,
BrowserCompatible,
WriteDateUseDateFormat,
NotWriteRootClassName,
/** @deprecated */
DisableCheckSpecialChar,
BeanToArray,
WriteNonStringKeyAsString,
NotWriteDefaultValue,
BrowserSecure,
IgnoreNonFieldGetter,
WriteNonStringValueAsString,
IgnoreErrorGetter,
WriteBigDecimalAsPlain,
MapSortField;
这些是FastJSON库中JSON配置的一些选项,每个选项都对应着不同的功能或行为。以下是对这些选项的简要说明:
选项 | 描述 |
---|---|
QuoteFieldNames | 输出key时是否使用双引号,默认为true |
UseSingleQuotes | 使用单引号而不是双引号,默认为false |
WriteMapNullValue | 是否输出空置的字段,默认为false |
WriteEnumUsingToString | Enum输出name()或者original,默认为false |
WriteEnumUsingName | Enum输出name()或者original,默认为true |
UseISO8601DateFormat | Date使用ISO8601格式输出,默认为true |
WriteNullListAsEmpty | List字段如果为null,输出为[],而非null,默认为false |
WriteNullStringAsEmpty | 字符类型字段如果为null,输出为"",而非null,默认为false |
WriteNullNumberAsZero | 数值字段如果为null,输出为0,而非null,默认为false |
WriteNullBooleanAsFalse | Boolean字段如果为null,输出为false,而非null,默认为false |
SkipTransientField | 是否跳过transient字段,默认为true |
SortField | 按字段名称排序后输出,默认为false |
WriteTabAsSpecial | 把\t做转义输出,默认为false |
PrettyFormat | 结果是否格式化,默认为false |
WriteClassName | 序列化时写入类型信息,默认为true |
DisableCircularReferenceDetect | 消除对同一对象循环引用的问题,默认为false |
WriteSlashAsSpecial | 对斜杠’/'进行转义,默认为false |
BrowserCompatible | 将中文都会序列化为Unicode,默认为false |
WriteDateUseDateFormat | 全局修改日期格式,默认为false |
NotWriteRootClassName | 不输出根类型,默认为false |
DisableCheckSpecialChar | 校验ASCII字符,只输出能显示的字符,默认为false |
BeanToArray | 将对象转为array输出,默认为false |
WriteNonStringKeyAsString | 使用非String类型作为key时,转义为String,默认为false |
NotWriteDefaultValue | 不输出null字段,默认为false |
BrowserSecure | 防止循环引用,默认为false |
IgnoreNonFieldGetter | 忽略没有getter的字段,默认为false |
WriteNonStringValueAsString | 将非String类型的值输出为String,默认为false |
IgnoreErrorGetter | 在遇到错误的getter时,输出错误信息,默认为false |
WriteBigDecimalAsPlain | BigDecimal输出为普通数字,默认为false |
MapSortField | 输出Map时对key进行排序操作,默认为false |
您可以根据需要设置这些选项来定制FastJSON库在序列化和反序列化时的行为
总结
以上就是今天要讲的内容,本文简单介绍了FashJson的使用,FashJson是强大的Json处理工具,能方便我们跟前端进行数据的联调,是开发中必不可少的的一种工具.