将 Jackson JsonNode 数组转换为 Java List<String>

Mar*_*unt 5 java json jackson

我有一个 Jackson JsonNode (v2.6.3),它有一个 json 数组作为其字段之一,我希望将该数组转换为 java 列表

目前,我在第 3 行执行以下问题:

JsonNode jsonNode = getJsonPayload();
JsonNode partial = jsonNode.path("someArrayField");
List<String> z = new ObjectMapper().readValue(partial.traverse(), new TypeReference<ArrayList<String>>(){}); // <- this is the problem area
Run Code Online (Sandbox Code Playgroud)

这感觉昂贵且不合适,我本以为库会提供一个简单的调用来实现这一点。

获取列表的正确/有效方法是什么?我看到其他一些人遵循与我上面相同的模式,但答案并未被广泛接受

Nol*_*uen 2

自 Jackson 2.11 以来,方法readerForListOfreaderForArrayOf可用。因此,您的代码将如下所示:

JsonNode jsonNode = getJsonPayload();
JsonNode partial = jsonNode.path("someArrayField");
List<String> z = new ObjectMapper().readerForListOf(String.class).readValue(partial);
Run Code Online (Sandbox Code Playgroud)