20221117 树模型

概述

TreeNode 接口,JsonNode 抽象类实现 TreeNode

主要关注 TreeNode 接口的方法

ObjectMapper 相关方法

  • readTree

  • writeTree

简单使用

String user = objectMapper.writeValueAsString(User.newDemoUser());

JsonNode userJsonNode = objectMapper.readTree(user);
System.out.println(userJsonNode);       // {"name":"张三","age":18,"birthDate":949494020000,"likes":["sing","dance","read"]}
JsonNode birthDateJsonNode = userJsonNode.get("birthDate");
System.out.println(birthDateJsonNode);      // 949494020000


objectMapper.writeTree(objectMapper.createGenerator(System.out), userJsonNode);
// {"name":"张三","age":18,"birthDate":949494020000,"likes":["sing","dance","read"]}

TreeNode 方法

Minimal introspection methods

  • asToken

  • numberType

  • size

判断节点类型,只有一个返回 true

  • isValueNode

  • isContainerNode

  • isMissingNode

以下两个方法任何一个为 true 时,isContainerNode 为 true

  • isArray

  • isObject

Basic traversal through structured entries (Arrays, Objects)

  • get

  • path

  • fieldNames

  • at

Converting to/from Streaming API

  • traverse

JsonNode 方法

Public API, type introspection

  • getNodeType

  • isPojo

  • isNumber

  • isIntegralNumber

  • isFloatingPointNumber

  • isShort

  • isInt

  • isLong

  • isFloat

  • isDouble

  • isBigDecimal

  • isBigInteger

  • isTextual

  • isBoolean

  • isNull

  • isBinary


  • canConvertToLong

  • canConvertToExactIntegral

Public API, straight value access

  • textValue

  • binaryValue

  • booleanValue

  • numberValue

  • shortValue

  • intValue

  • longValue

  • floatValue

  • doubleValue

  • decimalValue

  • bigIntegerValue

Public API, value access with conversion(s)/coercion(s)

  • asText

  • asInt

  • asLong

  • asDouble

  • asBoolean

Public API, extended traversal (2.10) with "required()"

  • require

  • requireNonNull

  • required

  • requiredAt

Public API, value find / existence check methods

  • has

  • hasNonNull

Public API, container access

  • iterator

  • elements

  • fields

Public API, find methods

  • findValue

  • findValues

  • findValuesAsText

  • findPath

  • findParent

  • findParents

Public API, path handling

  • with

  • withArray

Other

  • toPrettyString

常用方法 findValue

String user = objectMapper.writeValueAsString(User.newDemoUser());

JsonNode userJsonNode = objectMapper.readTree(user);
System.out.println(
        userJsonNode);       // {"name":"张三","age":18,"birthDate":949494020000,"likes":["sing","dance","read"]}
JsonNode birthDateJsonNode = userJsonNode.get("birthDate");
System.out.println(birthDateJsonNode);      // 949494020000


objectMapper.writeTree(objectMapper.createGenerator(System.out), userJsonNode);
// {"name":"张三","age":18,"birthDate":949494020000,"likes":["sing","dance","read"]}

JSON Pointer

JSON Pointer 规范

相关方法:

  • at
ClassPathResource classPathResource = new ClassPathResource("test.json");
JsonNode userJsonNode = objectMapper.readTree(classPathResource.getReader(StandardCharsets.UTF_8));

JsonNode friendsJsonNode = userJsonNode.at("/0/friends");
Console.log(friendsJsonNode.toString());        // [{"id":0,"name":"Bentley Randolph"},{"id":1,"name":"Kirkland Hinton"},{"id":2,"name":"Darlene Riley"}]

JsonNode nameJsonNode = friendsJsonNode.at("/1/name");
Console.log(nameJsonNode);      // Kirkland Hinton
posted @ 2022-11-21 16:04  流星<。)#)))≦  阅读(29)  评论(0编辑  收藏  举报