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


com.alibaba.fastjson.serializer.JSONSerializer#writeWithFormat

修改后的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
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

修改的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     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 ?  '\''  '"' ;
     }