1. 概述

本教程将展示如何使用Jackson 2把JSON字符串转为JsonNode

学习更多,请访问我的Jackson 系列教程

2. 快速解析

解析JSON字符串非常简单,我们只需要ObjectMapper

    @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. 底层方式解析

某些情况下,你需要通过更底层方式,下面例子暴露了实际负责解析字符串的JsonParser

    @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树模型

@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上获取。