com.fasterxml.jackson.databind.node

## Class BaseJsonNode

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonNode
  - - com.fasterxml.jackson.databind.node.BaseJsonNode

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

Direct Known Subclasses:
  ContainerNode, ValueNode

    public abstract class BaseJsonNode
    extends JsonNode
    implements JsonSerializable

Abstract base class common to all standard `JsonNode` implementations. The main addition here is that we declare that sub-classes must implement `JsonSerializable`. This simplifies object mapping aspects a bit, as no external serializers are needed.

### Constructor Summary

Constructors
`protected` `BaseJsonNode()`

### Method Summary

Methods
`abstract com.fasterxml.jackson.core.JsonToken` `asToken()` Method that can be used for efficient type detection when using stream abstraction for traversing nodes.
`JsonNode` `findPath(String fieldName)` Method similar to `JsonNode.findValue(java.lang.String)`, but that will return a "missing node" instead of null if no field is found.
`com.fasterxml.jackson.core.JsonParser.NumberType` `numberType()` Returns code that identifies type of underlying numeric value, if (and only if) node is a number node.
`abstract void` `serialize(com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider)` Method called to serialize node instances using given generator.
`abstract void` `serializeWithType(com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer)` Type information is needed, even if JsonNode instances are "plain" JSON, since they may be mixed with other types.
`com.fasterxml.jackson.core.JsonParser` `traverse()`
`com.fasterxml.jackson.core.JsonParser` `traverse(com.fasterxml.jackson.core.ObjectCodec codec)`

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

`_at, asBoolean, asBoolean, asDouble, asDouble, asInt, asInt, asLong, asLong, asText, asText, at, at, bigIntegerValue, binaryValue, booleanValue, canConvertToInt, canConvertToLong, decimalValue, deepCopy, doubleValue, elements, equals, fieldNames, fields, findParent, findParents, findParents, findValue, findValues, findValues, findValuesAsText, findValuesAsText, floatValue, get, get, 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, size, textValue, toString, with, withArray`

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

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

### Constructor Detail

#### BaseJsonNode

    protected BaseJsonNode()

### Method Detail

#### findPath

    public final JsonNode findPath(String fieldName)

Description copied from class: `JsonNode`
Method similar to `JsonNode.findValue(java.lang.String)`, but that will return a "missing node" instead of null if no field is found. Missing node is a specific kind of node for which `JsonNode.isMissingNode()` returns true; and all value access methods return empty or missing value.

Specified by:
  `findPath` in class `JsonNode`
Parameters:
  `fieldName` - Name of field to look for
Returns:
  Value of first matching node found; or if not found, a "missing node" (non-null instance that has no value)

#### traverse

    public com.fasterxml.jackson.core.JsonParser traverse()

Specified by:
  `traverse` in interface `com.fasterxml.jackson.core.TreeNode`

#### traverse

    public com.fasterxml.jackson.core.JsonParser traverse(com.fasterxml.jackson.core.ObjectCodec codec)

Specified by:
  `traverse` in interface `com.fasterxml.jackson.core.TreeNode`

#### asToken

    public abstract com.fasterxml.jackson.core.JsonToken asToken()

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`

#### numberType

    public com.fasterxml.jackson.core.JsonParser.NumberType numberType()

Returns code that identifies type of underlying numeric value, if (and only if) node is a number node.

Specified by:
  `numberType` in interface `com.fasterxml.jackson.core.TreeNode`

#### serialize

    public abstract void serialize(com.fasterxml.jackson.core.JsonGenerator jgen,
                 SerializerProvider provider)
                            throws IOException,
                                   com.fasterxml.jackson.core.JsonProcessingException

Method called to serialize node instances using given generator.

Specified by:
  `serialize` in interface `JsonSerializable`
Throws:
  `IOException`
  `com.fasterxml.jackson.core.JsonProcessingException`

#### serializeWithType

    public abstract void serializeWithType(com.fasterxml.jackson.core.JsonGenerator jgen,
                         SerializerProvider provider,
                         TypeSerializer typeSer)
                                    throws IOException,
                                           com.fasterxml.jackson.core.JsonProcessingException

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`
Throws:
  `IOException`
  `com.fasterxml.jackson.core.JsonProcessingException`