• 使用 Jackson – 将字符串转换为 JsonNode 对象


    概述

    本快速指南的主要目的是如何使用 Jackson 2 来将一个字符串转换为 JsonNode 对象。

    JsonNode 定义在 com.fasterxml.jackson.databind.JsonNode 包中。

    快速转换

    可以使用下面的代码直接进行转换。

    转换的方式也比较简单,在定义好 ObjectMapper 对象后,直接使用这个对象的 readTree 方法将输入的字符串转换为 JsonNode 对象。

    考察下面的代码:

    @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);
    }
    

    低级别的转换

    在有些情况下,你可能需要使用更加低级别的转换,比如说在转换的时候需要对一些输出参数进行设置。

    那么你就需要先配置 Parser 了。

    与前面的快速转换不同的是,在你 new 了一个新的 ObjectMapper 对象后,你需要从这个对象中获得 Factory。

    然后再创建一个 Parser,最后再调用 readTree 的方法。

    请考察下面的代码:

    @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);
    }
    

    JsonNode 的使用

    当 JSON 字符串被处理成了 JsonNode 对象后,那我们可以使用 JSON Tree Model 来对转换后的 JSON 对象进行操作。

    例如下面的代码,首先我们完成了字符串到 JSON 对象的转换,然后转换完成后,我们通过 K1 的对定义来获得值。

    @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"));
    }
    

    结论

    在使用 fasterxml 的 jackson 包对 Json 数据操作之前,首先需要做的事情就是将输入的 String 或者文件或者不同的输入流转换为 JsonNode 对象。

    后续的操作就是对 JsonNode 的对象进行操作了。

    例如,上面我们的一个 JsonNode 对象是一个数组,那么我们可以对上面的数组中转换后的对象进行遍历。

    https://www.ossez.com/t/jackson-jsonnode/13724

  • 相关阅读:
    kettle plugin 插件开发
    eclipse插件hibernate tools安装
    全面总结Java泛型 使用案例
    向刚工作的人解释什么叫工作!
    Hibernate 的HQL,QBC 查询语言
    JQuery Highcharts图表控件使用说明
    JSP 的脚本,指令,动作
    ODI OWB 特性比较说明
    Win32 框架文档视图(3)
    Win32 框架文档视图(2)
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/15240941.html
Copyright © 2020-2023  润新知