![](/img/trans.png)
[英]Jackson - converting java object to json - Need all key keys to upper case
[英]Is there any way to create JSON object with keys as upper case?
項目:使用REST Web服務的Android應用
使用方法:
客戶-排球
服務器API-澤西島
轉換器:Gson
這是我第一次在這里提出問題,我將提供“逃避”此代碼約定的方式。 由於我正在一個已經將POJO字段定義為大寫的項目(不幸的是,我無法更改它),所以我不得不找到一種方法來修復JSON字符串並將其轉換為大寫POJO的實例。
所以基本上是這樣的:客戶端POJO <-> JSON對象與gson <->服務器POJO之間的相互轉換
所以,可以說我在Users.class
有一個字段
String USERNAME;
當Jersey通過via @Produces
發送實例時,它遵循創建JSON的約定並發送一個對象
{"username": "random_name"}
當通過gson.fromJSON
從JSON轉換時,客戶端的POJO實例將對該字段獲取null值(顯然,因為JSONObject中的字段為小寫)。
這是我通過使用一種方法來管理它的方法,該方法解析JSONObject並將每個鍵都設置為大寫:
public static String fixJSONObject(JSONObject obj) {
String jsonString = obj.toString();
for(int i = 0; i<obj.names().length(); i++){
try{
obj.names().getString(i).toUpperCase());
jsonString=jsonString.replace(obj.names().getString(i),
obj.names().getString(i).toUpperCase());
} catch(JSONException e) {
e.printStackTrace();
}
}
return jsonString;
}
幸運的是,由於gson.fromJSON()
除了Class以外還需要String(不是JSONObject)作為參數,因此我設法解決了這一問題。
因此,我的問題是:是否有任何優雅的方法使JSON忽略該代碼約定並創建具有精確字段的JSON對象? 在這種情況下:
{"USERNAME": "random_name"}
澤西島內部使用JAXB將bean編組為xml / json。 因此,您始終可以使用@XmlElement
批注並使用name屬性來設置用於編組的屬性名稱
@XmlElement(name="USERNAME")
String USERNAME;
只需使用注釋com.google.gson.annotations.SerializedName
添加到類Users.java
:
@SerializedName("username")
String USERNAME;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.