当前位置: 首页 > 知识库问答 >
问题:

错误com.fasterxml.jackson.databind.exc.MismatchedInputException:由于输入结束,没有要映射的内容

唐兴思
2023-03-14

我正在尝试转换下一个字符串:

"{ \"contacts\": [{\"name\":\"1\",\"phone\":\"+123456\"}]}"

对于某些自定义对象:

public class CustomObject{

    private List<Contact> contacts;

    public CustomObject(){

    }

    public CustomObject(List<Contact> contacts) {
        this.contacts = contacts;
    }

    public List<Contact> getContactList() {
        return contacts;
    }

    public void setContactList(List<Contact> contacts) {
        this.contacts = contacts;
    }
}

此外,此CustomObject中还有另一个对象

public class Contact {

    private String name;
    private String phone;

    public Contact() {
    }

    public Contact(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

现在,我正在尝试做以下工作:

private List<Contact> parseString(String jsonAsString) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    CustomObject customObject = mapper.readValue(jsonAsString, CustomObject .class);
    return customObject .getContactList();
}

但我得到了下一个错误:

com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: (String)""{ \"contacts\": [{\"name\":\"1\",\"phone\":\"+972545519713\"}]}""; line: 1, column: 1]

共有1个答案

姜博
2023-03-14

杰克逊很聪明,但没那么聪明。

如果没有注释,在反序列化期间无法识别您的公共settersetContactList

你有两个选择:

  1. 用JsonProperty(“contacts”)注释它
  2. 将其更改为设置联系人

其他选择包括更改JSON或使实际字段可访问-不详细说明,因为它们很可能是糟糕的选择。

如果您计划序列化POJO实例,还可以考虑在其他地方修改代码,例如针对getContactList。

 类似资料: