解决FastJson 1.2.39的bug
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决FastJson 1.2.39的bug相关的知识,希望对你有一定的参考价值。
1、日期转换默认格式覆盖注解格式的bug;
com.alibaba.fastjson.serializer.JSONSerializer#writeWithFormat
修改后的代码:
public final void writeWithFormat(Object object, String format) { if (object instanceof Date) { DateFormat dateFormat = this.getDateFormat(); if(format!=null){ dateFormat = new SimpleDateFormat(format, locale); dateFormat.setTimeZone(timeZone); } String text = dateFormat.format((Date) object); out.writeString(text); return; } write(object); }
2、解决转JSON时候Bean字段默认被排序的毛病:
com.alibaba.fastjson.serializer.SerializeWriter#computeFeatures
修改的代码:
protected void computeFeatures() { 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 ? ‘\‘‘ : ‘"‘; }
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/1973749
以上是关于解决FastJson 1.2.39的bug的主要内容,如果未能解决你的问题,请参考以下文章