【问题标题】:How to extract the field using Gson如何使用 Gson 提取字段
【发布时间】:2014-08-13 16:57:57
【问题描述】:

我正在尝试使用 Gson 从 Json 中提取字段:

{“属性”:{“538”:{“id”:“538”,“代码”:“sabor”,“标签”:“Sabor”,“选项”:[{“id”:“24 ”,“标签”:“Baunilha”,“价格”:“0”,“oldPrice”:“0”,“产品”:[“1376”]},{“id”:“25”,“标签”: “巧克力”、“价格”:“0”、“旧价格”:“0”、“产品”:[“1377”] } ] } } }

我需要的是选项内的标签字段(在本例中为 Baunilha 和 Chocolate)。

我尝试了以下课程:

公共类客户实现可序列化{

@SerializedName("options")
private Produto options;

public Produto getOptions() {
    return options;
}

public void setEmail(Produto options) {
    this.options = options;
}

公共类 Produto 实现 Serializable{

@SerializedName("label")
private String label;

public String getLabel() {
    return  label;
}

public void setLabel(String label) {
    this.label = label;
}

}

客户 cust = g.fromJson(ja, Customer.class);

但我不断收到空指针错误。

【问题讨论】:

    标签: java json serialization gson


    【解决方案1】:

    “options”值不是由字符串组成的对象,“options”值是对象数组。您需要将 Customer 中的定义更改为:

    class CustomerWrapper {
        @SerializedName("attributes")
        private Map<String, Customer> attributes;
    }
    
    class Customer {
        @SerializedName("options")
        private List<Produto> options;
    }
    

    【讨论】:

    • 您的 JSON 是一个多嵌套字段,会涉及更多对象嵌套。 “options”字段嵌入在“attributes”字段中的“538”字段中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多