如何避免使用许多@SerializedName?

时间:2017-06-13 07:46:35

标签: java json gson retrofit android

在我的android应用程序中,我定义了太多的模型类,我使用了大写的属性名称,如下所示:

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中是否有任何配置可以避免这种情况?

2 个答案:

答案 0 :(得分:3)

您应该尊重java naming conventions并重命名字段。

答案 1 :(得分:1)

虽然我接受我应该更正我的命名约定,但以下代码是向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);
        }
    });