當我們在使用json格式傳遞數據的時候,別人傳給我們的字段名和我們的字段名不一致,可以使用 FastJson 的 @JSONField 注解
@Data public class TestModel { @JSONField(name = "status_message") private String statusMessage; }
此時可能會出現轉換失敗的情況,修改fastJson的全局配置
@Configuration public class TestConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { //只添加 FastJsonHttpMessageConverter 即可實現@JSONField 的轉換 FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); /* QuoteFieldNames 輸出key時是否使用雙引號,默認為true UseSingleQuotes 使用單引號而不是雙引號,默認為false WriteMapNullValue 是否輸出值為null的字段,默認為false WriteEnumUsingToString Enum輸出name()或者original,默認為false UseISO8601DateFormat Date使用ISO8601格式輸出,默認為false WriteNullListAsEmpty List字段如果為null,輸出為[],而非null WriteNullStringAsEmpty 字符類型字段如果為null,輸出為”“,而非null WriteNullNumberAsZero 數值字段如果為null,輸出為0,而非null WriteNullBooleanAsFalse Boolean字段如果為null,輸出為false,而非null SkipTransientField 如果是true,類中的Get方法對應的Field是transient,序列化時將會被忽略。默認為true SortField 按字段名稱排序后輸出。默認為false WriteTabAsSpecial 把\t做轉義輸出,默認為false 不推薦 PrettyFormat 結果是否格式化,默認為false WriteClassName 序列化時寫入類型信息,默認為false。反序列化是需用到 DisableCircularReferenceDetect 消除對同一對象循環引用的問題,默認為false WriteSlashAsSpecial 對斜杠’/’進行轉義 BrowserCompatible 將中文都會序列化為\uXXXX格式,字節數會多一些,但是能兼容IE 6,默認為false WriteDateUseDateFormat 全局修改日期格式,默認為false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); DisableCheckSpecialChar 一個對象的字符串屬性中如果有特殊字符如雙引號,將會在轉成json時帶有反斜杠轉移符。如果不需要轉義,可以使用這個屬性。默認為false */ fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullListAsEmpty); converter.setFastJsonConfig(fastJsonConfig); converters.add(0,converter); } }