杰克逊将一系列对象反序列化为pojo

时间:2018-07-04 14:49:59

标签: java arrays json jackson

所以我有这个JSON文件

{
      "results":[
          "result":{},
          "result":{}
         ]
}

我希望将其反序列化为包含结果对象数组的java对象。

public class Foo(){
     @JsonProperty("results")
     private Result[] results;

     public void setResults(Result[] results){
           this.results = results;
     }

     public Result[] getResults(){
         return this.results;
     }
}

public class JsonToObject(){
     ObjectMapper mp = new ObjectMapper();

     public void createObject(String jsonFile){
     Foo bar = mp.readValue(jsonFile, Foo.Class)
     }
}

我的问题是我一直在反序列化问题,因为我没有定义“结果”。

解决这个问题的一种方法是将result作为Result中的类变量,但是这样做似乎很愚蠢,而且还可能导致重新序列化问题。

如何转换JSON,以便我的类包含结果数组?

1 个答案:

答案 0 :(得分:0)

您的问题程序错误。您的代码有很多问题。请使用以下示例:

public class Foo {

    @JsonProperty("results")
    private Result[] results;

    public Foo() {
    }

    public Result[] getResults() {
        return results;
    }

    public void setResults(Result[] results) {
        this.results = results;
    }
}

public class Result {
    private String name;

    public Result() {
    }

    public String getName() {
        return name;
    }

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

public static void main(String[] args) throws IOException {
    ObjectMapper mp = new ObjectMapper();
    String content = "{\"results\":[{\"name\":\"apple\"},{\"name\":\"lemon\"}]}";
    Foo bar = mp.readValue(content, Foo.class);
}