返回Json實體類屬性大小寫問題
總歸上述問題Rt,其實今天開發剛遇到,當時找了半天為啥前臺傳參后臺卻接收不到,原來是返回的時候返回小寫,但是前臺依舊大寫傳參。
查了很多后發現其實是json返回的時候把首字母變小寫了,也就是Spring Boot中Jackson的功勞
百度后得@JsonProperty注解完美解決。但與此同時會出現兩個問題
如果注解放到屬性上,則返回的時候既有大寫也有小寫,
1
2
|
@JsonProperty ( "Ao" ) private Integer Ao; |
Result:{Ao:xxx,ao:xxx}
所以注解放在getter上完美解決,返回只有大寫不再自動變為小寫的問題。
1
2
3
4
|
@JsonProperty ( "Ao" ) public Integer getAo() { return Ao; } |
Result:{Ao:xxx}
Json轉換大小寫的坑
最近搞了一個Springboot+mybatis的框架,往前端進行Json格式轉換的時候,發現屬性的大寫首字母變小寫了,這極大的不方便前后一致性,如是網上一堆亂搜,測試了N多情況,算是把問題解決了,不過坑大,記錄如下:
1) 如果沒有使用fastjson(阿里巴巴出品),使用@JsonProperty("XXXX")的注解方式可以解決問題,XXXX就是轉換成Json的屬性名,但注意,只有放在getter上才是有效的,直接在屬性上加沒效果.(這說明spring 默認的jackson類庫處理是基于訪問器。
2)如果使用了fastjson,就用@JSONField(name="XXXXX")注解方式進行,這個可以放在屬性上。不過放在getter,setter上更好。
3)如果同時有兩個存在,一般都是fastjson起效果,不過具體情況可以試下,我遇到的就是fastjson起效。當然要強制失效fastjson,就需要在Application類上加注解:@EnableWebMvc.
總結,初次為大規模做Java項目,開發底層框架,感覺Java的很多框架開發者有點死腦筋,命名規范這玩意就是個規范,你做框架底層沒必要越廚代庖,強制采用這些規范。做底層的東西就要把自由度留給使用人員,別人才好在此基礎上擴展。雖然可以通過一些注解什么的解決問題,但浪費很多時間。
整體上來說,無論是Java的一些框架還是語法本身都跟C#不在一個自由度上,很多時候都是做些沒有什么技術含量的東西。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/github_36887863/article/details/81807088