使用Jackson将Json数组拆分为单独的Json元素

Ram*_*ddi 4 java arrays json jackson

有没有办法使用杰克逊库将给定的Json数组拆分为单独的Json元素?比方说,我有这个Json数组:

[
    {
        "key1":"value11", 
        "key2":"value12"
    },
    {
        "key1":"value21", 
        "key2":"value22"
    }
]
Run Code Online (Sandbox Code Playgroud)

拆分后,我想要一个单独的元素列表,如:

{
        "key1":"value11", 
        "key2":"value12"
}
Run Code Online (Sandbox Code Playgroud)

{
        "key1":"value21", 
        "key2":"value22"
}
Run Code Online (Sandbox Code Playgroud)

was*_*ren 9

解决此问题的一个很好的解决方案就是使用Java 8 Streaming API进行迭代:s.的JsonNode目的是Iterable,其中spliterator的方法是可用的.因此,可以使用以下代码:

public List<String> split(final String jsonArray) throws IOException {
    final JsonNode jsonNode = new ObjectMapper().readTree(jsonArray);
    return StreamSupport.stream(jsonNode.spliterator(), false) // Stream
            .map(JsonNode::toString) // map to a string
            .collect(Collectors.toList()); and collect as a List
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是跳过重映射(调用toString)并返回List<JsonNode>元素.这样,你可以使用该JsonNode方法来访问(数据get,path等等).