微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决FastJson 1.2.39的bug


1、日期转换认格式覆盖注解格式的bug;


com.alibaba.fastjson.serializer.JSONSerializer#writeWithFormat

修改后的代码

publicfinalvoidwriteWithFormat(Objectobject,Stringformat){
if(objectinstanceofDate){
DateFormatdateFormat=this.getDateFormat();
if(format!=null){
dateFormat=newSimpleDateFormat(format,locale);
dateFormat.setTimeZone(timeZone);
}
Stringtext=dateFormat.format((Date)object);
out.writeString(text);
return;
}
write(object);
}


2、解决转JSON时候Bean字段认被排序的毛病:

com.alibaba.fastjson.serializer.SerializeWriter#computeFeatures

修改代码

protectedvoidcomputeFeatures(){
quoteFieldNames=(this.features&SerializerFeature.QuoteFieldNames.mask)!=0;
useSingleQuotes=(this.features&SerializerFeature.UseSingleQuotes.mask)!=0;
//sortField=(this.features&SerializerFeature.sortField.mask)!=0;
sortField=false;
disableCircularReferenceDetect=(this.features&SerializerFeature.disableCircularReferenceDetect.mask)!=0;
beanToArray=(this.features&SerializerFeature.BeanToArray.mask)!=0;
writeNonStringValueAsstring=(this.features&SerializerFeature.WriteNonStringValueAsstring.mask)!=0;
notWriteDefaultValue=(this.features&SerializerFeature.NotWriteDefaultValue.mask)!=0;
writeEnumUsingName=(this.features&SerializerFeature.WriteEnumUsingName.mask)!=0;
writeEnumUsingToString=(this.features&SerializerFeature.WriteEnumUsingToString.mask)!=0;

writeDirect=quoteFieldNames//
&&(this.features&nonDirectFeautres)==0//
&&(beanToArray||writeEnumUsingName)
;

keySeperator=useSingleQuotes?'\'':'"';
}

原文地址:https://www.jb51.cc/json/288703.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐