Ron*_*erg 0 java string json jackson objectmapper
我正在尝试转换下一个字符串:
"{ \"contacts\": [{\"name\":\"1\",\"phone\":\"+123456\"}]}"
Run Code Online (Sandbox Code Playgroud)
到一些自定义对象:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,此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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试执行以下操作:
private List<Contact> parseString(String jsonAsString) throws IOException {
ObjectMapper mapper = new ObjectMapper();
CustomObject customObject = mapper.readValue(jsonAsString, CustomObject .class);
return customObject .getContactList();
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了下一个错误:
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]
Run Code Online (Sandbox Code Playgroud)
杰克逊很聪明,但不是那么聪明.
setContactList如果没有注释,则在反序列化期间无法识别您的公共setter .
你有两个选择:
@JsonProperty("contacts")setContacts其他选择包括更改您的JSON或使实际字段可访问 - 没有详细说明,因为它们很可能是错误的选择.
还可以考虑在其他地方修改代码,例如,getContactList如果您计划序列化POJO的实例,则可以考虑使用getter.
| 归档时间: |
|
| 查看次数: |
3752 次 |
| 最近记录: |