【问题标题】:How to convert the POJO which consist with list of objects如何转换包含对象列表的 POJO
【发布时间】:2013-07-29 10:34:41
【问题描述】:
public class CustomerAddress {
    private Customer customer;
    //I think the problem is in hear becouse jackson does not know how to serialize this object list
    private List<Address> address;

    public Customer getCustomer() {
        return customer;
    }

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

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

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

public class Address{

    private Integer id;    
    private Customer customer;
    private AddressType addressType;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }       
    public Customer getCustomer() {
        return customer;
    }
    public void setCustomer(Customer customer) {
        this.customer = customer;
    }
    public AddressType getAddressType() {
        return addressType;
    }
    public void setAddressType(AddressType addressType) {
        this.addressType = addressType;
    }
}

public class Customer {

    private Integer id;
    private String firstName;
    private String middleName;   
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    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;
    }
}

我从 DB 表单中获取数据并像这样将其发送回页面

CustomerAddress customerAddress = customerAddressService.getCustomerAddress(22);
Map<String, Object> map = getMapCustomerAddress(customerAddress);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
return mapper.writeValueAsString(map);

这是我返回地图的方法

private Map<String, Object> getMapCustomerAddress(CustomerAddress customerAddress) throws IOException {

    Map<String, Object> modelMap = new HashMap<String, Object>(3);
    modelMap.put("total", 1);
    modelMap.put("data", customerAddress);
    modelMap.put("success", true);

    return modelMap;
}

我遇到的错误

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException$Reference
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:613)
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)

任何人都可以告诉我如何使用 jackson 将这个“CustomerAddress”类转换为 json

【问题讨论】:

  • 如果使用spring mvc,请检查是否包含jackson库和dispatcher-servlet.xml文件是否有
  • 你在使用 Maven 吗?您的项目类路径中有哪些 JAR
  • 当我只将它与客户对象一起使用时它可以工作。问题是我不能将它与“List
    address;”一起使用。
  • 我不想将其更改为“List 地址”,因为当我反序列化来自前端的对象时,它会变得一团糟。必须有一种方法可以将此 pojo 类转换为 json 字符串,而无需更改“List

标签: java json extjs jackson pojo


【解决方案1】:

我刚刚遇到了同样的问题,它与循环引用有关。我怀疑您的问题与此处的循环引用有关:

public class Address {

private Integer id;    
private Customer customer;

有一个从AddressCustomer 的循环引用,我假设它与Customer 引用在CustomerAddress 中的引用相同:

public class CustomerAddress {
private Customer customer;

以某种方式打破循环引用,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多