com.fasterxml.jackson.databind.node

## Class ContainerNode<T extends ContainerNode<T>>

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonNode
  - - com.fasterxml.jackson.databind.node.BaseJsonNode
    - - com.fasterxml.jackson.databind.node.ContainerNode<T>

All Implemented Interfaces:
  com.fasterxml.jackson.core.TreeNode, JsonSerializable, JsonNodeCreator, Iterable<JsonNode>

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.

### Field Summary

Fields
`protected 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 Summary

Constructors
`protected` `ContainerNode(JsonNodeFactory nc)`

### Method Summary

Methods
`ArrayNode` `arrayNode()` Factory method that constructs and returns an empty `ArrayNode` Construction is done using registered `JsonNodeFactory`.
`String` `asText()` Method that will return a valid String representation of the container value, if the node is a value node (method `JsonNode.isValueNode()` returns true), otherwise empty String.
`abstract com.fasterxml.jackson.core.JsonToken` `asToken()` Method that can be used for efficient type detection when using stream abstraction for traversing nodes.
`BinaryNode` `binaryNode(byte[] data)`
`BinaryNode` `binaryNode(byte[] data, int offset, int length)`
`BooleanNode` `booleanNode(boolean v)`
`abstract JsonNode` `get(int index)` Method for accessing value of the specified element of an array node.
`abstract JsonNode` `get(String fieldName)` Method for accessing value of the specified field of an object node.
`NullNode` `nullNode()`
`NumericNode` `numberNode(BigDecimal v)`
`NumericNode` `numberNode(BigInteger v)`
`NumericNode` `numberNode(byte v)`
`ValueNode` `numberNode(Byte v)`
`NumericNode` `numberNode(double v)`
`ValueNode` `numberNode(Double v)`
`NumericNode` `numberNode(float v)`
`ValueNode` `numberNode(Float v)`
`NumericNode` `numberNode(int v)`
`ValueNode` `numberNode(Integer v)`
`NumericNode` `numberNode(long v)`
`ValueNode` `numberNode(Long v)`
`NumericNode` `numberNode(short v)`
`ValueNode` `numberNode(Short v)`
`ObjectNode` `objectNode()` Factory method that constructs and returns an empty `ObjectNode` Construction is done using registered `JsonNodeFactory`.
`ValueNode` `pojoNode(Object pojo)`
`POJONode` `POJONode(Object pojo)` Deprecated. Since 2.3 Use `pojoNode(java.lang.Object)` instead.
`abstract T` `removeAll()` Method for removing all children container has (if any)
`abstract int` `size()`
`TextNode` `textNode(String text)`

### Methods inherited from class com.fasterxml.jackson.databind.node.BaseJsonNode

`findPath, numberType, serialize, serializeWithType, traverse, traverse`

### Methods inherited from class com.fasterxml.jackson.databind.JsonNode

`_at, asBoolean, asBoolean, asDouble, asDouble, asInt, asInt, asLong, asLong, at, at, bigIntegerValue, binaryValue, booleanValue, canConvertToInt, canConvertToLong, decimalValue, deepCopy, doubleValue, elements, equals, fieldNames, fields, findParent, findParents, findParents, findValue, findValues, findValues, findValuesAsText, findValuesAsText, floatValue, getNodeType, has, has, hasNonNull, hasNonNull, intValue, isArray, isBigDecimal, isBigInteger, isBinary, isBoolean, isContainerNode, isDouble, isFloat, isFloatingPointNumber, isInt, isIntegralNumber, isLong, isMissingNode, isNull, isNumber, isObject, isPojo, isShort, isTextual, isValueNode, iterator, longValue, numberValue, path, path, shortValue, textValue, toString, with, withArray`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### _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 Detail

#### ContainerNode

    protected ContainerNode(JsonNodeFactory nc)

### Method Detail

#### asToken

    public abstract com.fasterxml.jackson.core.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 `com.fasterxml.jackson.core.TreeNode`
Specified by:
  `asToken` in class `BaseJsonNode`

#### asText

    public String asText()

Description copied from class: `JsonNode`
Method that will return a valid String representation of the container value, if the node is a value node (method `JsonNode.isValueNode()` returns true), otherwise empty String.

Specified by:
  `asText` in class `JsonNode`

#### size

    public abstract int size()

Specified by:
  `size` in interface `com.fasterxml.jackson.core.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 `com.fasterxml.jackson.core.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 `com.fasterxml.jackson.core.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.

#### 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`

#### 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`

#### nullNode

    public final NullNode nullNode()

Specified by:
  `nullNode` in interface `JsonNodeCreator`

#### booleanNode

    public final BooleanNode booleanNode(boolean v)

Specified by:
  `booleanNode` 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(BigInteger 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 NumericNode 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`

#### textNode

    public final TextNode textNode(String text)

Specified by:
  `textNode` 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`

#### POJONode

    @Deprecated
    public final POJONode POJONode(Object pojo)

Deprecated. Since 2.3 Use `pojoNode(java.lang.Object)` instead.

#### removeAll

    public abstract T removeAll()

Method for removing all children container has (if any)

Returns:
  Container node itself (to allow method call chaining)