JSON:尽管POJO和JSON文件中包含所有字段,但仍无法识别字段异常

时间:2014-12-30 05:49:46

标签: java json jackson

我在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。它对我不起作用。

2 个答案:

答案 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>>() {});