com.fasterxml.jackson.databind.node

## Class BaseJsonNode

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

- All Implemented Interfaces:
    com.fasterxml.jackson.core.TreeNode, JsonSerializable, java.lang.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.

- - ### Nested Class Summary

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

      `JsonSerializable.Base`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `BaseJsonNode()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(java.lang.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.
    `abstract int` | `hashCode()`
    `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, 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 com.fasterxml.jackson.databind.JsonSerializable.Base

      `isEmpty`

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

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

- - ### Constructor Detail

    - #### BaseJsonNode

          protected BaseJsonNode()

  - ### Method Detail

    - #### findPath

          public final JsonNode findPath(java.lang.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)

    - #### hashCode

          public abstract int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### 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 java.io.IOException,
                                         com.fasterxml.jackson.core.JsonProcessingException

      Method called to serialize node instances using given generator.
      Specified by:
        `serialize` in interface `JsonSerializable`
      Throws:
        `java.io.IOException`
        `com.fasterxml.jackson.core.JsonProcessingException`

    - #### serializeWithType

          public abstract void serializeWithType(com.fasterxml.jackson.core.JsonGenerator jgen,
                               SerializerProvider provider,
                               TypeSerializer typeSer)
                                          throws java.io.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:
        `java.io.IOException`
        `com.fasterxml.jackson.core.JsonProcessingException`