com.fasterxml.jackson.databind.node

## Class MissingNode

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonSerializable.Base
  - - com.fasterxml.jackson.databind.JsonNode
    - - com.fasterxml.jackson.databind.node.BaseJsonNode
      - - com.fasterxml.jackson.databind.node.ValueNode
        - - com.fasterxml.jackson.databind.node.MissingNode

All Implemented Interfaces:
  TreeNode, JsonSerializable, Serializable, Iterable<JsonNode>

    public final class MissingNode
    extends ValueNode

This singleton node class is generated to denote "missing nodes" along paths that do not exist. For example, if a path via element of an array is requested for an element outside range of elements in the array; or for a non-array value, result will be reference to this node.

In most respects this placeholder node will act as `NullNode`; for example, for purposes of value conversions, value is considered to be null and represented as value zero when used for numeric conversions.

See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonNode

`JsonNode.OverwriteMode`

### Nested classes/interfaces inherited from interface com.fasterxml.jackson.databind.JsonSerializable

`JsonSerializable.Base`

### Constructor Summary

Constructors
`protected` `MissingNode()` NOTE: visibility raised to `protected` in 2.9.3 to allow custom subtypes (which may not be greatest idea ever to have but was requested)

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`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.
`String` `asText(String defaultValue)` Method similar to `JsonNode.asText()`, except that it will return `defaultValue` in cases where null value would be returned; either for missing nodes (trying to access missing property, or element at invalid item for array) or explicit nulls.
`JsonToken` `asToken()` Method that can be used for efficient type detection when using stream abstraction for traversing nodes.
`<T extends JsonNode> T` `deepCopy()` All current value nodes are immutable, so we can just return them as is.
`boolean` `equals(Object o)` Equality for node objects is defined as full (deep) value equality.
`static MissingNode` `getInstance()`
`JsonNodeType` `getNodeType()` Return the type of this node
`int` `hashCode()`
`boolean` `isMissingNode()`
`protected Object` `readResolve()`
`JsonNode` `require()` Method that may be called to verify that `this` node is NOT so-called "missing node": that is, one for which `JsonNode.isMissingNode()` returns `true`.
`JsonNode` `requireNonNull()` Method that may be called to verify that `this` node is neither so-called "missing node" (that is, one for which `JsonNode.isMissingNode()` returns `true`) nor "null node" (one for which `JsonNode.isNull()` returns `true`).
`void` `serialize(JsonGenerator g, SerializerProvider provider)` Method called to serialize node instances using given generator.
`void` `serializeWithType(JsonGenerator g, SerializerProvider provider, TypeSerializer typeSer)` Type information is needed, even if JsonNode instances are "plain" JSON, since they may be mixed with other types.
`String` `toPrettyString()` Alternative to `JsonNode.toString()` that will serialize this node using Jackson default pretty-printer.
`String` `toString()` Method that will produce (as of Jackson 2.10) valid JSON using default settings of databind, as String.

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

`_at, findParent, findParents, findValue, findValues, findValuesAsText, get, get, has, has, hasNonNull, hasNonNull, isEmpty, path, path`

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

`_jsonPointerIfValid, _reportWrongNodeOperation, _reportWrongNodeType, _withArray, _withObject, _withXxxMayReplace, _withXxxVerifyReplace, findPath, numberType, required, required, traverse, traverse, withArray, withObject`

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

`_reportRequiredViolation, _this, asBoolean, asBoolean, asDouble, asDouble, asInt, asInt, asLong, asLong, at, at, bigIntegerValue, binaryValue, booleanValue, canConvertToExactIntegral, canConvertToInt, canConvertToLong, decimalValue, doubleValue, elements, equals, fieldNames, fields, findParents, findValues, findValuesAsText, floatValue, intValue, isArray, isBigDecimal, isBigInteger, isBinary, isBoolean, isContainerNode, isDouble, isFloat, isFloatingPointNumber, isInt, isIntegralNumber, isLong, isNull, isNumber, isObject, isPojo, isShort, isTextual, isValueNode, iterator, longValue, numberValue, properties, requiredAt, requiredAt, shortValue, size, textValue, with, withArray, withArray, withArray, withObject, withObject, withObject`

### Methods inherited from class com.fasterxml.jackson.databind.JsonSerializable.Base

`isEmpty`

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

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

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

### Constructor Detail

#### MissingNode

    protected MissingNode()

NOTE: visibility raised to `protected` in 2.9.3 to allow custom subtypes (which may not be greatest idea ever to have but was requested)

### Method Detail

#### readResolve

    protected Object readResolve()

#### isMissingNode

    public boolean isMissingNode()

Specified by:
  `isMissingNode` in interface `TreeNode`
Overrides:
  `isMissingNode` in class `JsonNode`

#### deepCopy

    public <T extends JsonNode> T deepCopy()

Description copied from class: `ValueNode`
All current value nodes are immutable, so we can just return them as is.

Overrides:
  `deepCopy` in class `ValueNode`
Returns:
  Node that is either a copy of this node (and all non-leaf children); or, for immutable leaf nodes, node itself.

#### getInstance

    public static MissingNode getInstance()

#### getNodeType

    public JsonNodeType getNodeType()

Description copied from class: `JsonNode`
Return the type of this node

Specified by:
  `getNodeType` in class `JsonNode`
Returns:
  the node type as a `JsonNodeType` enum value

#### asToken

    public 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 `ValueNode`

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

#### asText

    public String asText(String defaultValue)

Description copied from class: `JsonNode`
Method similar to `JsonNode.asText()`, except that it will return `defaultValue` in cases where null value would be returned; either for missing nodes (trying to access missing property, or element at invalid item for array) or explicit nulls.

Overrides:
  `asText` in class `JsonNode`

#### serialize

    public final void serialize(JsonGenerator g,
                                SerializerProvider provider)
                         throws IOException

Description copied from class: `BaseJsonNode`
Method called to serialize node instances using given generator.

Specified by:
  `serialize` in interface `JsonSerializable`
Specified by:
  `serialize` in class `BaseJsonNode`
Throws:
  `IOException`

#### 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`
Overrides:
  `serializeWithType` in class `ValueNode`
Throws:
  `IOException`

#### require

    public JsonNode require()

Description copied from class: `JsonNode`
Method that may be called to verify that `this` node is NOT so-called "missing node": that is, one for which `JsonNode.isMissingNode()` returns `true`. If not missing node, `this` is returned to allow chaining; otherwise `IllegalArgumentException` is thrown.

Overrides:
  `require` in class `JsonNode`
Returns:
  `this` node to allow chaining

#### requireNonNull

    public JsonNode requireNonNull()

Description copied from class: `JsonNode`
Method that may be called to verify that `this` node is neither so-called "missing node" (that is, one for which `JsonNode.isMissingNode()` returns `true`) nor "null node" (one for which `JsonNode.isNull()` returns `true`). If non-null non-missing node, `this` is returned to allow chaining; otherwise `IllegalArgumentException` is thrown.

Overrides:
  `requireNonNull` in class `JsonNode`
Returns:
  `this` node to allow chaining

#### hashCode

    public int hashCode()

Specified by:
  `hashCode` in class `BaseJsonNode`

#### toString

    public String toString()

Description copied from class: `JsonNode`
Method that will produce (as of Jackson 2.10) valid JSON using default settings of databind, as String. If you want other kinds of JSON output (or output formatted using one of other Jackson-supported data formats) make sure to use `ObjectMapper` or `ObjectWriter` to serialize an instance, for example:

       String json = objectMapper.writeValueAsString(rootNode);

Note: method defined as abstract to ensure all implementation classes explicitly implement method, instead of relying on `Object.toString()` definition.

Overrides:
  `toString` in class `BaseJsonNode`

#### toPrettyString

    public String toPrettyString()

Description copied from class: `JsonNode`
Alternative to `JsonNode.toString()` that will serialize this node using Jackson default pretty-printer.

Overrides:
  `toPrettyString` in class `BaseJsonNode`

#### equals

    public boolean equals(Object o)

Description copied from class: `JsonNode`
Equality for node objects is defined as full (deep) value equality. This means that it is possible to compare complete JSON trees for equality by comparing equality of root nodes.

Note: marked as abstract to ensure all implementation classes define it properly and not rely on definition from `Object`.

Specified by:
  `equals` in class `JsonNode`