如何使用改型处理JSON对象中的NULL值

Rifki Maulana:

我尝试使用这样的改造从json获取值

holder.txtColor.setText(dataList.get(position).getProductColorMotor().getColorName());

但我有这样的错误:

空对象引用上的java.lang.String com.qiscus.qismo.chat.data.model.ordermodel.ProductColorResponse.getColorName()'

我认为这是因为我从JSON响应中得到了null:

...
      "product_color_motor": null
...

响应有时会返回NULL。

但通常响应如下所示:

...
"product_color_motor": {
            "id": 315,
            "product_variant_id": 9,
            "md_model_code": "GW2",
            "main_dealer_type": "Beat Pop ESP CW",
            "color_id": 86,
            "color_code": "PM",
            "color_name": "Groovy Red White",
            "color_hex_1": "#FFFFFF",
            "color_hex_2": "#CC0000",
            "parent_color": "Groovy Red White,Groovy,Red,White"
        }
...

OrderListResponse.java

public class OrderListResponse {
@SerializedName("product_color_motor")
@Expose
private ProductColorResponse productColorMotor;

public ProductColorResponse getProductColorMotor() {
        return productColorMotor;
}

public void setProductColorMotor(ProductColorResponse productColorMotor) {
        this.productColorMotor = productColorMotor;
}

ProductColorResponse.java

public class ProductColorResponse {
    @SerializedName("product_variant_id")
    @Expose
    private Integer productVariantId;
    @SerializedName("color_id")
    @Expose
    private Integer colorId;
    @SerializedName("color_code")
    @Expose
    private String colorCode;
    @SerializedName("color_name")
    @Expose
    private String colorName;
    @SerializedName("color_hex_1")
    @Expose
    private String colorHex1;
    @SerializedName("color_hex_2")
    @Expose
    private String colorHex2;
    @SerializedName("parent_color")
    @Expose
    private String parentColor;

    public Integer getProductVariantId() {
        return productVariantId;
    }

    public void setProductVariantId(Integer productVariantId) {
        this.productVariantId = productVariantId;
    }

    public Integer getColorId() {
        return colorId;
    }

    public void setColorId(Integer colorId) {
        this.colorId = colorId;
    }

    public String getColorCode() {
        return colorCode;
    }

    public void setColorCode(String colorCode) {
        this.colorCode = colorCode;
    }

    public String getColorName() {
        return colorName;
    }

    public void setColorName(String colorName) {
        this.colorName = colorName;
    }

    public String getColorHex1() {
        return colorHex1;
    }

    public void setColorHex1(String colorHex1) {
        this.colorHex1 = colorHex1;
    }

    public String getColorHex2() {
        return colorHex2;
    }

    public void setColorHex2(String colorHex2) {
        this.colorHex2 = colorHex2;
    }

    public String getParentColor() {
        return parentColor;
    }

    public void setParentColor(String parentColor) {
        this.parentColor = parentColor;
    }
}

如果返回NULL,该如何处理?谢谢。

Zun :

您的通话getProductColorMotor()可能会引发异常。如果您想要安全的Java代码,请执行以下操作:

1)将变量和getter标记为可为空

@SerializedName("product_color_motor")
@Nullable
private ProductColorResponse productColorMotor;

@Nullable
public ProductColorResponse getProductColorMotor() {
        return productColorMotor;
}

2)不要尝试直接访问getColorName(),而是将productColorMotor分配给变量。

ProductColorResponse p = dataList.get(position)

3)现在检查是否为空,并为您提供替代文本 txtColor

if (p == null) { holder.txtColor.setText("Alt text") } else { holder.txtColor.setText(p.getColorName())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章