我在stackoverflow和外部看到过这个问题的多个答案。但我无法理解这里的真正问题。
我有一个pojo类,如下所示。
public class User{
private int id;
private String name;
private String houseNumber;
private String location;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getname() {
return name;
}
public void setname(String name) {
this.name = name;
}
public String gethouseNumber() {
return houseNumber;
}
public void sethouseNumber(String houseNumber) {
this.houseNumber = houseNumber;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
我有一个JSON文件如下:
[{
"id":1,
"name": "roy",
"houseNumber":"No/242",
"location" :"Germany"
},
{
"id":2,
"name": "philip",
"houseNumber":"No/252",
"location" :"Germany"
}]
文件的每个json条目都有一个带有值的字段位置。但为什么我得到异常无法识别的字段" location"尽管我的POJO和JSON文件中都有该字段?我想知道这个的原因。许多解决方案建议使用JSON的注释,如@JsonIgnoreProperties
。它对我不起作用。
答案 0 :(得分:3)
尝试在getter和setter上正确使用驼峰盒,我知道有时会让Jackson产生意想不到的结果。
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHouseNumber() {
return houseNumber;
}
public void setHouseNumber(String houseNumber) {
this.houseNumber = houseNumber;
}
答案 1 :(得分:2)
我尝试了你的代码,它对我来说很好用 @JsonIgnoreProperties不是必需的。你可以做以下
String jsonString = "[{\"id\":1,\"name\": \"roy\",\"houseNumber\":\"No/242\",\"location\" :\"Germany\"},{\"id\":2,\"name\": \"philip\",\"houseNumber\":\"No/252\",\"location\" :\"Germany\"}]";
ObjectMapper mapper = new ObjectMapper();
List<User> a = mapper.readValue(jsonString, new TypeReference<ArrayList<User>>() {});