【问题标题】:Gson - Parse from Json to a typed ArrayList<T>Gson - 从 Json 解析为类型化的 ArrayList<T>
【发布时间】:2019-11-02 06:26:42
【问题描述】:

从 JSON 响应生成的 GSON JAVA 类。我正在尝试从 Address_.java 类中解析 A​​ddress1 和 Address。它是从 JSON 响应生成的。我正在使用 GSON 对其进行解析,并尝试从中读取 Address1 和 Address2 的值。我尝试了不同的解析方法,但尝试没有成功。

地址列表.java

public class AddressList {

    @SerializedName("_embedded")
    @Expose
    private Embedded embedded;

    public Embedded getEmbedded() {
        return embedded;
    }

    public void setEmbedded(Embedded embedded) {
        this.embedded = embedded;
    }

}

Embedded.java

public class Embedded {

    @SerializedName("address")
    @Expose
    private List<Address> address = null;

    public List<Address> getAddress() {
        return address;
    }

    public void setAddress(List<Address> address) {
        this.address = address;
    }

}

地址.java

public class Address {

    @SerializedName("_links")
    @Expose
    private Links_ links;
    @SerializedName("_embedded")
    @Expose
    private Object embedded;
    @SerializedName("customer")
    @Expose
    private String customer;
    @SerializedName("account")
    @Expose
    private String account;
    @SerializedName("address1")
    @Expose
    private String address1;
    @SerializedName("address2")
    @Expose
    private String address2;


    public Links_ getLinks() {
        return links;
    }

    public void setLinks(Links_ links) {
        this.links = links;
    }

    public Object getEmbedded() {
        return embedded;
    }

    public void setEmbedded(Object embedded) {
        this.embedded = embedded;
    }

    public String getCustomer() {
        return customer;
    }

    public void setCustomer(String customer) {
        this.customer = customer;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getAddress1() {
        return address1;
    }

    public void setAddress1(String address1) {
        this.address1 = address1;
    }

    public String getAddress2() {
        return address2;
    }

    public void setAddress2(String address2) {
        this.address2 = address2;
    }

}

GSON 响应

{
    "_links": {
        "self": {
            "href": "https://xxxxx/xxx/address?where=xxx%20eq%20xx%20and%20customer%20eq%xxxx&page=1&pagesize=50"
        }
    },
    "_embedded": {
        "address": [
            {
                "_links": {
                    "self": {
                        "href": "https://xxxx/xxxx/xxxx/xxxx"
                    }
                },
                "_embedded": null,
                "customer": "12345",
                "account": "",
                "address1": "111 ABC DR",
                "address2": " ",
            }
        ]
    },
    "totalItems": 1,
    "pageSize": 50,
    "totalPages": 1,
    "currentPage": 1
}

有人可以帮帮我吗?谢谢

【问题讨论】:

  • 仅作记录:您知道“_”在 Java 标识符中没有位置,除了 SOME_CONSTANT?我也想知道为什么你使用 @SerializedName ...即使在字段名称与你的序列化名称匹配的情况下?该注释只是为这些情况添加了线路噪音?!
  • 我正在使用此链接创建 GSON 对象 - jsonschema2pojo.org
  • 嗯,好吧。我只能说:“_”是不合法的,而不是添加这样的东西,我宁愿配置json来将一个名为totalItems的java字段变成total-items .因为 JSON(好吧,javascript)使用 kebap-case。但无论如何,这不是你要问的;-)
  • 我做了一些改动。
  • public class Embedded { @SerializedName("address") @Expose private List
    address = null; public List
    getAddress() { 返回地址; } public void setAddress(List
    address) { this.address = address; } }

标签: java json rest parsing gson


【解决方案1】:

感谢幽灵猫。我从响应和对象本身中删除了 _embedded,它开始工作。第三方 Web 服务正在发送带有 _ 的响应。它现在正在工作。

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多