将JSON列表反序列化为带有列表的对象

时间:2018-10-01 12:13:18

标签: java json jackson

是否可以反序列化JSON列表,如下所示:

[
  {"value": "value1"},
  {"value": "value2"}
]

进入Java DTO类,该类将在其中声明该列表,如下所示:

class Model {
   private String value;
}

class ModelList {
   private List<Model> list;
}

使用Jackson-或可能使用其他框架。

在其他作品中,我需要将JSON列表反序列化为对象而不是对象列表。

感谢帮助!

1 个答案:

答案 0 :(得分:0)

这是我曾经用来反序列化类似JSON对象的东西。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.CollectionType;
import java.io.IOException;
import java.util.List;

public interface JsonProcessor {

    public static String marshall(Object obj) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
    }

    public static <T> List<T> unmarshallToList(String json, Class<T> classType)
            throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        CollectionType javaType = mapper.getTypeFactory()
                .constructCollectionType(List.class, classType);

        return mapper.readValue(json, javaType);
    }
}

您可以简单地使用第一种方法将Java对象编组为JSON字符串。

您可以使用的第二种方法。在这里,我使用了Jackson JSON处理器。

对于第一个参数,您应传递JSON字符串,而第二个参数应为Model