如何将JsonNode映射到Object的ArrayList

时间:2015-06-29 11:02:13

标签: java jackson

我有一个输入JSON节点,如下所示

"headers" : {
    "name1" : "value1",
    "name2" : "value2"
}

我的Java类如下所示:

    public class OptionalHeader{
        private String name;
        private String value;
        public OptionalHeader() {
            super();
        }
        public OptionalHeader(String name, String value) {
            this.name = name;
            this.value = value;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }

我想从JsonNode创建一个类似下面的OptionalHeader的arrayList。

    List<OptionalHeader> optionalHeaders = new ArrayList<OptionalHeader>();

任何帮助将不胜感激。谢谢:))

2 个答案:

答案 0 :(得分:1)

感谢所有回复:)

我要求通过包含key->value对的REST请求的JsonNode转换为ArrayList<OptionalHeader>,请参阅相关的OptionalHeader类。

最后使用以下内容完成:

来自REST请求的

(将其作为我的POJO中的JsonNode)。我在我的二传手中使用了以下内容。

public void setOptHeaders(JsonNode optHeaders) throws JsonParseException, JsonMappingException, IOException {
    this.optHeaders = optHeaders;
    List<OptionalHeader> allHeaders = new ArrayList<OptionalHeader>();
    Iterator<Entry<String, JsonNode>> nodeIterator = optHeaders.fields();
    while (nodeIterator.hasNext()) {
       Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodeIterator.next();
       OptionalHeader header = new OptionalHeader(entry.getKey(),entry.getValue().asText());
       allHeaders.add(header);

    }
    optionalEmailHeaders.addAll(allHeaders);
}

然后在getter中将其转换回来。

public JsonNode getOptHeaders() {
    final ObjectMapper mapper = new ObjectMapper();
    final Map<String, String> map = new HashMap<String, String>();
    for (final OptionalHeader data: optionalEmailHeaders)
        map.put(data.getName(), data.getValue());
    optHeaders = mapper.valueToTree(map);
    return optHeaders;
}

答案 1 :(得分:0)

杰克逊映射器可以将Java对象映射到JSON对象。 您可以从here获取Jackson API。 尝试将您的JSON字符串保存到文件中,例如。 'headers.json'。 Jackson提供了一个ObjectMapper类,您可以使用其readValue( File file, Class class)方法从JSON获取Java对象,如: -

ObjectMapper mapper = new ObjectMapper(); OptionalHeader optHeader= mapper.readValue(new File("c:\\headers.json"), OptionalHeader .class);

您可以使用相同的链接获取文档和文档。阅读更多相关信息。

相关问题