首页 > 解决方案 > 当服务器 JSON 响应不包含 Moshi 中的密钥时,为嵌套对象分配默认值?

问题描述

Moshi用来解析对对象的JSON响应JAVA。问题是当服务器不发送嵌套类的键值时,moshi 将其分配给null. 虽然将默认值分配给基元和字符串等有效,但实例化嵌套类不起作用。

父客户类 -

public class Customer {
    @Json(name = "id")
    Integer id;
    @Json(name = "test")
    String test = "I'm batman!";
    @Json(name = "default_address")
    Address defaultAddress = new Address(-1, -1);

    public Integer getId() {
        return id;
    }

    public String getTest() {
        return test;
    }
}

地址类 -

public class Address {
    @Json(name = "id")
    Integer id;
    @Json(name = "customer_id")
    Integer customerId;

    public Address(int id, int cusID) {
        this.id = id;
        this.customerId = cusID;
    }

    public Integer getCustomerId() {
        return customerId;
    }

    public Integer getId() {
        return id;
    }
}

虽然响应不包含任何带有 name 的键test,但它可以工作。但是当服务器不发送default_address密钥时,defaultAddress设置为null.

标签: javaandroidretrofit2moshi

解决方案


推荐阅读