杰克逊–马歇尔String to JsonNode

Jackson – Marshall String to JsonNode

1.概述

本快速教程将展示如何使用Jackson 2将JSON字符串转换为JsonNode(com.fasterxml.jackson.databind.JsonNode)。

如果您想更深入地学习其他有趣的事情,可以使用Jackson 2进行操作-转到Jackson的主要教程。

2.快速解析

很简单,要解析JSON字符串,我们只需要一个ObjectMapper:

1
2
3
4
5
6
7
8
9
10
@Test
public void whenParsingJsonStringIntoJsonNode_thenCorrect()
  throws JsonParseException, IOException {
    String jsonString ="{"k1":"v1","k2":"v2"}";

    ObjectMapper mapper = new ObjectMapper();
    JsonNode actualObj = mapper.readTree(jsonString);

    assertNotNull(actualObj);
}

3.低层解析

如果由于某种原因需要将其设置为更低的级别,则以下示例公开负责实际解析String的JsonParser:

1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void givenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect()
  throws JsonParseException, IOException {
    String jsonString ="{"k1":"v1","k2":"v2"}";

    ObjectMapper mapper = new ObjectMapper();
    JsonFactory factory = mapper.getFactory();
    JsonParser parser = factory.createParser(jsonString);
    JsonNode actualObj = mapper.readTree(parser);

    assertNotNull(actualObj);
}

4.使用JsonNode

在将JSON解析为JsonNode对象之后,我们可以使用Jackson JSON树模型:

1
2
3
4
5
6
7
8
9
10
11
@Test
public void givenTheJsonNode_whenRetrievingDataFromId_thenCorrect()
  throws JsonParseException, IOException {
    String jsonString ="{"k1":"v1","k2":"v2"}";
    ObjectMapper mapper = new ObjectMapper();
    JsonNode actualObj = mapper.readTree(jsonString);

    // When
    JsonNode jsonNode1 = actualObj.get("k1");
    assertThat(jsonNode1.textValue(), equalTo("v1"));
}

5.结论

本文说明了如何将JSON字符串解析为Jackson JsonNode模型以启用JSON对象的结构化处理。

所有这些示例和代码段的实现都可以在我的github项目中找到–这是一个基于Eclipse的项目,因此应该很容易直接导入和运行。