【问题标题】:Deserializing JSON to Java using GSON results in empty fields使用 GSON 将 JSON 反序列化为 Java 会导致空字段
【发布时间】:2020-11-27 11:33:39
【问题描述】:

我使用 Gson 解析来自 API 的 JSON 响应。但是当我尝试获取内容时,它是空的。

我的序列化类:

class Weather {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("main")
@Expose
private String main;
@SerializedName("description")
@Expose
private String description;
@SerializedName("icon")
@Expose
private String icon;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getMain() {
    return main;
}

public void setMain(String main) {
    this.main = main;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getIcon() {
    return icon;
}

public void setIcon(String icon) {
    this.icon = icon;
}

}

我的电话:

        Gson gson = new GsonBuilder().create();
        Weather weather = gson.fromJson("{\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}]}", Weather.class);
        Log.i("[Weather]", "Weather: " + weather.getDescription());

描述和其他字段为空我不明白为什么?

【问题讨论】:

    标签: java android json gson


    【解决方案1】:

    不要传递完整的 JSON,而是尝试仅传递与“天气”相关联的数组中的内容,如下所示:

     Weather weather = gson.fromJson("{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}", Weather.class);
    

    【讨论】:

      【解决方案2】:

      您创建的模型类是一个 JSON 数组项,而不是完整的 JSON 对象。创建一个新的可序列化类,例如 WeatherObject 如下

      class WeatherObject {
      @SerializedName("weather")
      @Expose
      private ArrayList<Weather> weather;
      // getters and setters
      }
      

      gson.fromJson方法中使用这个类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多