从MagentoJSON设计Java对象

从MagentoJSON设计Java对象,java,json,magento,gson,Java,Json,Magento,Gson,以下是Magento REST API调用返回的原始JSON字符串: { "1":{ “实体id”:“1”, “网站id”:“1”, “电子邮件”:“约翰。oliver@hbo.com", “组id”:“1”, “创建时间”:“2015-04-21 12:47:00”, “禁用自动组更改”:“0”, “前缀”:空, “名字”:“约翰”, “middlename”:空, “姓氏”:“奥利弗”, “后缀”:空, “增值税”:空, “已在中创建”:“管理员” }, "2":{ “实体id”:“

以下是Magento REST API调用返回的原始JSON字符串:

{
"1":{  
“实体id”:“1”,
“网站id”:“1”,
“电子邮件”:“约翰。oliver@hbo.com",
“组id”:“1”,
“创建时间”:“2015-04-21 12:47:00”,
“禁用自动组更改”:“0”,
“前缀”:空,
“名字”:“约翰”,
“middlename”:空,
“姓氏”:“奥利弗”,
“后缀”:空,
“增值税”:空,
“已在中创建”:“管理员”
},
"2":{  
“实体id”:“2”,
“网站id”:“1”,
“电子邮件”:“贝克。johnson@yahoo.com",
“组id”:“1”,
“创建时间”:“2015-04-21 13:40:48”,
“禁用自动组更改”:“0”,
“前缀”:空,
“名字”:“Beckie”,
“middlename”:空,
“姓氏”:“约翰逊”,
“后缀”:空,
“增值税”:空,
“已在中创建”:“管理员”
}
}
我想第一次构建POJO,以下是类:

public class Customers {

    private Map<String, Customer> customerMap;

    public Map<String, Customer> getCustomerMap() {
        return customerMap;
    }

    public void setCustomerMap(Map<String, Customer> customerMap) {
        this.customerMap = customerMap;
    }
}

public class Customer {
    private String entity_id;
    private String website_id;
    private String email;
    private String group_id;
    private String created_at;
    private String disable_auto_group_change;
    private String prefix;
    private String firstname;
    private String middlename;
    private String lastname;
    private String suffix;
    private String taxvat;
    private String created_in;
    public String getEntity_id() {
        return entity_id;
    }
    public void setEntity_id(String entity_id) {
        this.entity_id = entity_id;
    }
    public String getWebsite_id() {
        return website_id;
    }
    public void setWebsite_id(String website_id) {
        this.website_id = website_id;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getGroup_id() {
        return group_id;
    }
    public void setGroup_id(String group_id) {
        this.group_id = group_id;
    }
    public String getCreated_at() {
        return created_at;
    }
    public void setCreated_at(String created_at) {
        this.created_at = created_at;
    }
    public String getDisable_auto_group_change() {
        return disable_auto_group_change;
    }
    public void setDisable_auto_group_change(String disable_auto_group_change) {
        this.disable_auto_group_change = disable_auto_group_change;
    }
    public String getPrefix() {
        return prefix;
    }
    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getMiddlename() {
        return middlename;
    }
    public void setMiddlename(String middlename) {
        this.middlename = middlename;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    public String getSuffix() {
        return suffix;
    }
    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
    public String getTaxvat() {
        return taxvat;
    }
    public void setTaxvat(String taxvat) {
        this.taxvat = taxvat;
    }
    public String getCreated_in() {
        return created_in;
    }
    public void setCreated_in(String created_in) {
        this.created_in = created_in;
    }

}
但结果是
null


我怀疑课程的格式可能是错误的,有人能建议什么是正确的格式吗?每个集合开头的数字
1
2
由Magento自动生成。

这在默认情况下不起作用,因为Gson希望有一个名为
“customerMap”
的字段来使用默认的反序列化。最简单的(不一定是最好的)解决方案就是:

String jsonText=“{\'customerMap\”:“+response.getBody()+”}”;
Customers=gson.fromJson(jsonText,Customers.class);
通过在映射外部添加字段名,Gson知道该做什么,并且
println
将输出,例如:

{1=Customer@2f56a6be, 2=Customer@61dd1c39}
但是,最好编写一个,或者修改magnet的输出以添加周围的
{“customerMap”:
}


不要尝试这样做

Map<String, Customer> cust = gson.fromJson(jsonText, Map.class); 
Map cust=gson.fromJson(jsonText,Map.class);

这实际上将生成一个
Map
类型的
Map
,其中
LinkedTreeMap
是一个内部gson类。

它在第一个“不一定是最好的”方法上运行得非常好。自定义反序列化程序太麻烦了,因为实现范围很窄。不要期望有太多的变化和非常有限的转换对象。修改Magento输出是不可能的,因为这是第三方集成代码。非常感谢。
Map<String, Customer> cust = gson.fromJson(jsonText, Map.class);