2017-06-13 112 views
0

在我的Android應用程序,我已經定義了太多的模型類,我用大寫的屬性名稱如下:如何避免使用許多@SerializedName?

public String FirstName; 
public String LastName; 

使用這種命名策略,retrofit不匹配的JSON提起的名字我的java類,因爲Web API發送駝峯名稱:

public String firstName; 
public String lastName; 

所以我必須使用@SerializedName屬性爲每個字段告訴改裝的json名字是什麼。我知道這很難,因爲有大量的這些屬性:

@SerializedName("firstName") 
public String FirstName; 
@SerializedName("lastName") 
public String LastName; 

是否有任何GsonConvertorFactory配置,以避免這一點?

+3

不要開始在Java大寫變量名。類是StudlyCase,變量名稱爲camelCase。枚舉大寫。這就像永遠的約定。 – Tschallacka

+1

我想你正在尋找'FieldNamingPolicy' https://google.github.io/gson/apidocs/com/google/gson/FieldNamingPolicy.html – nbokmans

回答

3

您應該尊重java naming conventions並重命名您的字段。

+0

謝謝。這是正確的,但不是我的答案! –

+2

更正,這不是你喜歡的答案,但你應該按照解決你的問題。 – Tschallacka

0

雖然我承認我應該糾正我的命名規則,下面這段代碼是添加自定義命名策略的Gson方式:

GsonBuilder gsonBuilder = new GsonBuilder(); 
    gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() { 
     @Override 
     public String translateName(Field f) { 
      String fieldName = f.getName(); 
      return Character.toLowerCase(fieldName.charAt(0)) + fieldName.substring(1); 
     } 
    });