FastJson应用

json的结构主要就是[],代表这是一个数组,{},代表这是一个对象,

对象转成json

String json=JSON.toJSONString(new BankTableHead().setTableHeadInfo("日期"));

map集合转成json

list转成json

这是list集合判空的方式

CollUtil.isEmpty(fieldList);

 这是String字符串判断为空的方式,两种方式都是hu tool包下的方法,isBlank()可以判断为null或者""的情况

StrUtil.isBlank(str);

将json转换成对象或者集合的方法就是:

JSON.parseObject();    需要转换成什么类型就用什么类型接收

List<String>  list=JSON.parseObject(json);

需要注意的是将json转换成map集合的方式: 记住后边的{}

Map<String,BankFileInfo> map=JSON.parseObject(json,new TypeReference<Map<String,BankFileInfo>>(){});

JSON还提供了大量的枚举以及注解,可以对自己想要生成的json格式进行定制化处理

String json = JSON.toJSONString(bankFileInfo,SerializerFeature.WriteNullStringAsEmpty);

 SerializerFeature 枚举(序列化)

类型起始版本含义备注
QuoteFieldNames输出数据时使用双引号,默认为 true
UseSingleQuotes输出数据时使用单引号,默认为 false
WriteMapNullValue输出值为 null 的字段,默认为 false
WriteEnumUsingToStringenum 输出 name() 或者 original,默认为 false
WriteEnumUsingNameenum 输出 name()
UseISO8601DateFormatdate 使用 ISO8601 格式输出,默认为 false
WriteNullListAsEmpty1.1list 字段如果为 null,输出为 [],而非 null
WriteNullStringAsEmpty1.1字符类型字段如果为null,输出为 ”“,而非 null
WriteNullNumberAsZero1.1数值字段如果为 null,输出为 0,而非 null
WriteNullBooleanAsFalse1.1boolean 字段如果为 null,输出为 false,而非 null
SkipTransientField1.1如果是 true,类中的 getXXX 方法对应的 Field 是 transient,序列化时将会被忽略。默认为 true
SortField1.1按字段名称排序后输出,默认为 false
WriteTabAsSpecial1.1.1把 \t 做转义输出,默认为 false (不推荐)
PrettyFormat1.1.2结果是否格式化,默认为 false
WriteClassName1.1.2序列化时写入类型信息,默认为 false。反序列化是需用到
DisableCircularReferenceDetect1.1.6消除对同一对象循环引用的问题,默认为 false
WriteSlashAsSpecial1.1.9对斜杠 ‘/’ 进行转义
BrowserCompatible1.1.10将中文都会序列化为 \uxxxx 格式,字节数会多一些,但是能兼容IE 6,默认为false
WriteDateUseDateFormat1.1.14全局修改日期格式,默认为 false JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
NotWriteRootClassName1.1.15不输出根类名称
DisableCheckSpecialChar1.1.19一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性,默认为 false
BeanToArray1.1.35将对象转为数组
WriteNonStringKeyAsString1.1.37非字符串键输出为字符串
NotWriteDefaultValue1.1.42不设置默认值
BrowserSecure1.2.6浏览器安全
IgnoreNonFieldGetter1.2.7忽略没有 getXXX 方法的字段
WriteNonStringValueAsString1.2.9非字符串值输出为字符串
IgnoreErrorGetter1.2.11忽略错误的 getXXX 方法的字段
WriteBigDecimalAsPlain1.2.16
MapSortField1.2.27允许 map 类型排序字段

 Feature 枚举(特征)

类型起始版本含义备注
AutoCloseSource允许自动关闭流(默认:true)
AllowComment允许注释(默认:false)
AllowUnQuotedFieldNames允许使用非双引号属性名称
AllowSingleQuotes允许单引号来包住属性名称和字符串值
InternFieldNames
AllowISO8601DateFormat允许使用 ISO8610 进行日期格式化
AllowArbitraryCommas允许多重逗号
UseBigDecimal使用 BigDecimal 类来装载数字,否则用的是 Double(默认:false)
IgnoreNotMatch1.1.2忽略不匹配
SortFeidFastMatch1.1.3排序字段优先匹配
DisableASM1.1.3禁用ASM
DisableCircularReferenceDetect1.1.7禁用循环引用检测
InitStringFieldAsEmpty1.1.10无值字符串设置为空串
SupportArrayToBean1.1.35支持数组转对象
OrderedField1.2.3排序字段
DisableSpecialKeyDetect1.2.5禁用特殊字符检测
UseObjectArray1.2.9使用对象数组
SupportNonPublicField1.2.22支持非公有字段
IgnoreAutoType1.2.29忽略自动类型
DisableFieldSmartMatch1.2.30禁用字段智能匹配

 用法:

 JSONObject reqJSON = JSONObject.parseObject(body, Feature.OrderedField);

 可以都自己试试,还有一些注解,例如

@JSONField

对于时间格式的参数进行传参时,有时候会因为格式出现异常,我们需要在实体类上加以下注解:

@JsonFormat(locale = "zh" ,timezone = "GMT+8",pattern = "yyyy-MM-dd");

 将list<map>转换成list<对象>

JSON.parseArray(JSON.toJSONString(cloudFacade.queryUserByIdList(commonRequest)), IbsaasUser.class)

 map转为对象

Person person = JSONObject.parseObject(JSONObject.toJSONString(source), Person.class);

 将object转换为lIst<object>

cn.hutool.json.JSONArray otherList = JSONUtil.parseArray(cloudFacade.queryOrgInfo(commonRequest).get("list"));
List<IbsaasUser> otherIbsaasUsers = JSONUtil.toList(otherList, IbsaasUser.class);

关于fastjson转字符串报错的问题:write javaBean error 

 JSON.toJSONString(requestErrorInfo, SerializerFeature.IgnoreErrorGetter))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值