簡體   English   中英

有什么辦法可以創建帶有大寫鍵的JSON對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM