All Implemented Interfaces:
TreeNode, JsonSerializable, Serializable, Iterable<JsonNode>
Direct Known Subclasses:
BinaryNode, BooleanNode, MissingNode, NullNode, NumericNode, POJONode, TextNode

public abstract class ValueNode extends BaseJsonNode
This intermediate base class is used for all leaf nodes, that is, all non-container (array or object) nodes, except for the "missing node".
See Also:
  • Constructor Details

    • ValueNode

      protected ValueNode()
  • Method Details

    • _at

      protected JsonNode _at(JsonPointer ptr)
      Description copied from class: JsonNode
      Helper method used by other methods for traversing the next step of given path expression, and returning matching value node if any: if no match, null is returned.
      Specified by:
      _at in class JsonNode
      Parameters:
      ptr - Path expression to use
      Returns:
      Either matching JsonNode for the first step of path or null if no match (including case that this node is not a container)
    • deepCopy

      public <T extends JsonNode> T deepCopy()
      All current value nodes are immutable, so we can just return them as is.
      Specified by:
      deepCopy in class JsonNode
      Returns:
      Node that is either a copy of this node (and all non-leaf children); or, for immutable leaf nodes, node itself.
    • asToken

      public abstract JsonToken asToken()
      Description copied from class: BaseJsonNode
      Method that can be used for efficient type detection when using stream abstraction for traversing nodes. Will return the first JsonToken that equivalent stream event would produce (for most nodes there is just one token but for structured/container types multiple)
      Specified by:
      asToken in interface TreeNode
      Specified by:
      asToken in class BaseJsonNode
      Returns:
      JsonToken that is most closely associated with the node type
    • serializeWithType

      public void serializeWithType(JsonGenerator g, SerializerProvider provider, TypeSerializer typeSer) throws IOException
      Description copied from class: BaseJsonNode
      Type information is needed, even if JsonNode instances are "plain" JSON, since they may be mixed with other types.
      Specified by:
      serializeWithType in interface JsonSerializable
      Specified by:
      serializeWithType in class BaseJsonNode
      Throws:
      IOException
    • isEmpty

      public boolean isEmpty()
      Description copied from class: JsonNode
      Convenience method that is functionally same as:
          size() == 0
      
      for all node types.
      Overrides:
      isEmpty in class JsonNode
    • get

      public final JsonNode get(int index)
      Description copied from class: JsonNode
      Method for accessing value of the specified element of an array node. For other nodes, null is always returned.

      For array nodes, index specifies exact location within array and allows for efficient iteration over child elements (underlying storage is guaranteed to be efficiently indexable, i.e. has random-access to elements). If index is less than 0, or equal-or-greater than node.size(), null is returned; no exception is thrown for any index.

      NOTE: if the element value has been explicitly set as null (which is different from removal!), a NullNode will be returned, not null.

      Specified by:
      get in interface TreeNode
      Specified by:
      get in class JsonNode
      Parameters:
      index - Index of the Array node element to access
      Returns:
      Node that represent value of the specified element, if this node is an array and has specified element. Null otherwise.
    • path

      public final JsonNode path(int index)
      Description copied from class: JsonNode
      This method is similar to JsonNode.get(int), except that instead of returning null if no such element exists (due to index being out of range, or this node not being an array), a "missing node" (node that returns true for JsonNode.isMissingNode()) will be returned. This allows for convenient and safe chained access via path calls.
      Specified by:
      path in interface TreeNode
      Specified by:
      path in class JsonNode
      Parameters:
      index - Index of the Array node element to access
      Returns:
      Node that represent value of the specified element, if this node is an array and has specified element; otherwise "missing node" is returned.
    • has

      public final boolean has(int index)
      Description copied from class: JsonNode
      Method that allows checking whether this node is JSON Array node and contains a value for specified index If this is the case (including case of specified indexing having null as value), returns true; otherwise returns false.

      Note: array element indexes are 0-based.

      This method is equivalent to:

         node.get(index) != null
      

      NOTE: this method will return true for explicitly added null values.

      Overrides:
      has in class JsonNode
      Parameters:
      index - Index to check
      Returns:
      True if this node is a JSON Object node, and has a property entry with specified name (with any value, including null value)
    • hasNonNull

      public final boolean hasNonNull(int index)
      Description copied from class: JsonNode
      Method that is similar to JsonNode.has(int), but that will return false for explicitly added nulls.

      This method is equivalent to:

         node.get(index) != null && !node.get(index).isNull()
      
      Overrides:
      hasNonNull in class JsonNode
    • get

      public final JsonNode get(String fieldName)
      Description copied from class: JsonNode
      Method for accessing value of the specified field of an object node. If this node is not an object (or it does not have a value for specified field name), or if there is no field with such name, null is returned.

      NOTE: if the property value has been explicitly set as null (which is different from removal!), a NullNode will be returned, not null.

      Specified by:
      get in interface TreeNode
      Overrides:
      get in class JsonNode
      Parameters:
      fieldName - Name of the field (of Object node) to access
      Returns:
      Node that represent value of the specified field, if this node is an object and has value for the specified field. Null otherwise.
    • path

      public final JsonNode path(String fieldName)
      Description copied from class: JsonNode
      This method is similar to JsonNode.get(String), except that instead of returning null if no such value exists (due to this node not being an object, or object not having value for the specified field), a "missing node" (node that returns true for JsonNode.isMissingNode()) will be returned. This allows for convenient and safe chained access via path calls.
      Specified by:
      path in interface TreeNode
      Specified by:
      path in class JsonNode
      Parameters:
      fieldName - Name of the field (of Object node) to access
      Returns:
      Node that represent value of the specified field, if this node is an object and has value for the specified field; otherwise "missing node" is returned.
    • has

      public final boolean has(String fieldName)
      Description copied from class: JsonNode
      Method that allows checking whether this node is JSON Object node and contains value for specified property. If this is the case (including properties with explicit null values), returns true; otherwise returns false.

      This method is equivalent to:

         node.get(fieldName) != null
      
      (since return value of get() is node, not value node contains)

      NOTE: when explicit null values are added, this method will return true for such properties.

      Overrides:
      has in class JsonNode
      Parameters:
      fieldName - Name of element to check
      Returns:
      True if this node is a JSON Object node, and has a property entry with specified name (with any value, including null value)
    • hasNonNull

      public final boolean hasNonNull(String fieldName)
      Description copied from class: JsonNode
      Method that is similar to JsonNode.has(String), but that will return false for explicitly added nulls.

      This method is functionally equivalent to:

         node.get(fieldName) != null && !node.get(fieldName).isNull()
      
      Overrides:
      hasNonNull in class JsonNode
    • findValue

      public final JsonNode findValue(String fieldName)
      Description copied from class: JsonNode
      Method for finding a JSON Object field with specified name in this node or its child nodes, and returning value it has. If no matching field is found in this node or its descendants, returns null.
      Specified by:
      findValue in class JsonNode
      Parameters:
      fieldName - Name of field to look for
      Returns:
      Value of first matching node found, if any; null if none
    • findParent

      public final ObjectNode findParent(String fieldName)
      Description copied from class: JsonNode
      Method for finding a JSON Object that contains specified field, within this node or its descendants. If no matching field is found in this node or its descendants, returns null.
      Specified by:
      findParent in class JsonNode
      Parameters:
      fieldName - Name of field to look for
      Returns:
      Value of first matching node found, if any; null if none
    • findValues

      public final List<JsonNode> findValues(String fieldName, List<JsonNode> foundSoFar)
      Specified by:
      findValues in class JsonNode
    • findValuesAsText

      public final List<String> findValuesAsText(String fieldName, List<String> foundSoFar)
      Specified by:
      findValuesAsText in class JsonNode
    • findParents

      public final List<JsonNode> findParents(String fieldName, List<JsonNode> foundSoFar)
      Specified by:
      findParents in class JsonNode