Class ContainerNode<T extends ContainerNode<T>>

All Implemented Interfaces:
Serializable, Iterable<JsonNode>, TreeNode, JacksonSerializable, JsonNodeCreator
Direct Known Subclasses:
ArrayNode, ObjectNode

public abstract class ContainerNode<T extends ContainerNode<T>> extends BaseJsonNode implements JsonNodeCreator
This intermediate base class is used for all container nodes, specifically, array and object nodes.
See Also:
  • Field Details

    • _nodeFactory

      protected final JsonNodeFactory _nodeFactory
      We will keep a reference to the Object (usually TreeMapper) that can construct instances of nodes to add to this container node.
  • Constructor Details

    • ContainerNode

      protected ContainerNode(JsonNodeFactory nc)
    • ContainerNode

      protected ContainerNode()
  • Method Details

    • isContainer

      public boolean isContainer()
      Specified by:
      isContainer in interface TreeNode
      Overrides:
      isContainer in class JsonNode
    • 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
    • size

      public abstract int size()
      Specified by:
      size in interface TreeNode
      Overrides:
      size in class JsonNode
    • get

      public abstract 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
      Returns:
      Node that represent value of the specified element, if this node is an array and has specified element. Null otherwise.
    • get

      public abstract 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
      Returns:
      Node that represent value of the specified field, if this node is an object and has value for the specified field. Null otherwise.
    • valueStream

      public abstract Stream<JsonNode> valueStream()
      Description copied from class: JsonNode
      Returns a stream of all value nodes of this Node, iff this node is an ArrayNode or ObjectNode. In case of Object node, property names (keys) are not included, only values. For other types of nodes, returns empty stream.
      Overrides:
      valueStream in class JsonNode
    • _withObject

      protected abstract ObjectNode _withObject(JsonPointer origPtr, JsonPointer currentPtr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex)
      Overrides:
      _withObject in class BaseJsonNode
    • booleanNode

      public final BooleanNode booleanNode(boolean v)
      Specified by:
      booleanNode in interface JsonNodeCreator
    • missingNode

      public JsonNode missingNode()
      Specified by:
      missingNode in interface JsonNodeCreator
    • nullNode

      public final NullNode nullNode()
      Specified by:
      nullNode in interface JsonNodeCreator
    • arrayNode

      public final ArrayNode arrayNode()
      Factory method that constructs and returns an empty ArrayNode Construction is done using registered JsonNodeFactory.
      Specified by:
      arrayNode in interface JsonNodeCreator
    • arrayNode

      public final ArrayNode arrayNode(int capacity)
      Factory method that constructs and returns an ArrayNode with an initial capacity Construction is done using registered JsonNodeFactory
      Specified by:
      arrayNode in interface JsonNodeCreator
      Parameters:
      capacity - the initial capacity of the ArrayNode
    • objectNode

      public final ObjectNode objectNode()
      Factory method that constructs and returns an empty ObjectNode Construction is done using registered JsonNodeFactory.
      Specified by:
      objectNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(byte v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(short v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(int v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(long v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(float v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final NumericNode numberNode(double v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(BigInteger v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(BigDecimal v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Byte v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Short v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Integer v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Long v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Float v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • numberNode

      public final ValueNode numberNode(Double v)
      Specified by:
      numberNode in interface JsonNodeCreator
    • stringNode

      public final StringNode stringNode(String text)
      Specified by:
      stringNode in interface JsonNodeCreator
    • binaryNode

      public final BinaryNode binaryNode(byte[] data)
      Specified by:
      binaryNode in interface JsonNodeCreator
    • binaryNode

      public final BinaryNode binaryNode(byte[] data, int offset, int length)
      Specified by:
      binaryNode in interface JsonNodeCreator
    • pojoNode

      public final ValueNode pojoNode(Object pojo)
      Specified by:
      pojoNode in interface JsonNodeCreator
    • rawValueNode

      public final ValueNode rawValueNode(RawValue value)
      Description copied from interface: JsonNodeCreator
      Factory method to use for adding "raw values"; pre-encoded values that are included exactly as-is when node is serialized. This may be used, for example, to include fully serialized JSON sub-trees. Note that the concept may not work with all backends, and since no translation of any kinds is done it will not work when converting between data formats.
      Specified by:
      rawValueNode in interface JsonNodeCreator
    • removeAll

      public abstract T removeAll()
      Method for removing all children container has (if any)
      Returns:
      Container node itself (to allow method call chaining)
    • removeIf

      public abstract T removeIf(Predicate<? super JsonNode> predicate)
      Method for removing matching those children (value) nodes container has that match given predicate.
      Parameters:
      predicate - Predicate to use for matching: anything matching will be removed
      Returns:
      Container node itself (to allow method call chaining)
      Since:
      2.19
    • removeNulls

      public T removeNulls()
      Method for removing null children (value) nodes container has (that is, children for which isNull() returns true). Short-cut for:
           removeIf(JsonNode::isNull);
      
      Returns:
      Container node itself (to allow method call chaining)
      Since:
      2.19