2017-06-13 32 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); 
     } 
    });