JSON在GSON中解析的初始资本密钥问题

时间:2015-10-05 06:56:08

标签: android json parsing android-studio gson

我之前在REST API中有过JSON响应,如下所示,

实施例,

  

{" ID":" 1234"}

我创建了一个POJO类来设置如下。

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

    @SerializedName("id")
    @Expose
    private String id;

    /**
     *
     * @return
     * The id
     */
    public String getId() {
        return id;
    }

    /**
     *
     * @param id
     * The id
     */
    public void setId(String id) {
        this.id = id;
    }
}

我正在使用GSON解析,如下所示

Example response = new Gson().fromJson(jsonResponse, Example .class);

现在,响应更改为

  

{" Id":" 1234"}

由于初始大写字母,我的整个解析返回null。

我尝试了很多东西来解决它,但我无法得到任何解决方案。我只有像

这样的建议
  • 您应该使用初始资本更改@SerializedName的名称(但我有数千个对象)

是否有任何解决方案GSON不会依赖大写字母或小写字母?

1 个答案:

答案 0 :(得分:2)

我认为您可以在Gson Builder中使用FieldNamingPolicy,如下所示:

Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
                .create();

我认为在您的情况下,您需要使用LOWER_CASE_WITH_UNDERSCORES或LOWER_CASE_WITH_DASHES,根据您要使用的分隔符。

From the docs如果您设置此标记,它会将驼峰式表单转换为小写字段名称。

编辑:
SerializedName注释将覆盖任何字段命名策略,因此您需要小心它 - > source