从MagentoJSON设计Java对象
以下是Magento REST API调用返回的原始JSON字符串:从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”:“
{
"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);