使用fastjson編輯全大寫字段時遇到的問題

2021-08-03 22:44:50 字數 1162 閱讀 8654

之前在專案中使用到了fastjson,其中有個bean中有個os欄位為全大寫,但是在生成json之後發現自動變成了小寫,導致前端沒有解析這塊。之後在網上搜尋了相關的內容,據網友說可以通過在get方法新增@jsonfield註解的方法來實現欄位的大寫,如下所示:

@jsonfield(name = "os") 

public

listgetos()

但是,

沒有什麼卵用,然後我檢查了專案的pom.xml檔案,發現確實使用的fastjson。之後我又在搜尋中發現有一位網友提到了使用@jsonproperty註解就可以實現字段大寫,如下所示:

@jsonproperty(value = "os")

private listos;

確實可以,但是。。。生成的json串中同時生成了os和os欄位。如下,

"os": [

"android4.4.2",

"android7.0",

"android4.4.4",

"android6.0"

],"os": [

"android4.4.2",

"android7.0",

"android4.4.4",

"android6.0"

]反正姑且是可以用了,之後我在中發現針對這種情況可以使用在類宣告上新增@jsonautodetect(jsonmethod.field)註解或者在get方法上新增@jsonignore註解來去除小寫的字段。之後我嘗試了一下,發現雖然存在@jsonautodetect註解,但是jsonmethod.field沒有找到,不知道是不是因為我這沒有載入jackson json的原因。單獨使用@jsonautodetect註解的話沒有效果,但是在get方法上新增

@jsonignore註解確實生效了,就是下面這樣子。

@jsonproperty(value = "os")

private listos;

@jsonignore

public listgetos()

public void setos(listos)

不過如果欄位過多的話確實不太方便。以上就是目前解決問題的過程,記錄下來希望大家能少走一點彎路,不過實際上為什麼這個會生效還是不太明白,因為jsonproperty是jackson json裡的。

fastjson 屬性大寫問題

fastjson 的屬性預設是首字母小寫的駝峰式分隔,所以如果首字母是大寫的話生成的json 串 有大寫的也有小寫的 小寫是不要的 在其get 方法前宣告下 jsonfield name bpm 相當於重新命名了 public class targetpoint implements seriali...

fastjson簡單使用

fastjson 是阿里巴巴的開源專案 主要是操作json 與 自定義物件,map,list之間進行的轉換 以下給出了 6種轉換 都是我自己封裝的 一點渣水平,封裝的 方法可以直接拿去用 我都已經測試過的 1.json 轉換 自定義物件 string json user user json.pars...

fastjson 使用技巧

當你有乙個欄位是字串型別,裡面是json格式資料,你希望直接輸入,而不是經過轉義之後再輸出,這時使用jsondirect true引數,如 import com.alibaba.fastjson.annotation.jsonfield public static class model若想將巢狀物...