public abstract class BaseJsonNode extends JsonNode implements Serializable
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.
Since 2.10, all implements have been Serializable
.
JsonNode.OverwriteMode
JsonSerializable.Base
Modifier | Constructor and Description |
---|---|
protected |
BaseJsonNode() |
Modifier and Type | Method and Description |
---|---|
protected com.fasterxml.jackson.core.JsonPointer |
_jsonPointerIfValid(String exprOrProperty) |
protected <T> T |
_reportWrongNodeOperation(String msgTemplate,
Object... args) |
protected <T> T |
_reportWrongNodeType(String msgTemplate,
Object... args)
Helper method that throws
UnsupportedOperationException as a result of
this node being of wrong type |
protected ArrayNode |
_withArray(com.fasterxml.jackson.core.JsonPointer origPtr,
com.fasterxml.jackson.core.JsonPointer currentPtr,
JsonNode.OverwriteMode overwriteMode,
boolean preferIndex) |
protected ObjectNode |
_withObject(com.fasterxml.jackson.core.JsonPointer origPtr,
com.fasterxml.jackson.core.JsonPointer currentPtr,
JsonNode.OverwriteMode overwriteMode,
boolean preferIndex) |
protected boolean |
_withXxxMayReplace(JsonNode node,
JsonNode.OverwriteMode overwriteMode) |
protected void |
_withXxxVerifyReplace(com.fasterxml.jackson.core.JsonPointer origPtr,
com.fasterxml.jackson.core.JsonPointer currentPtr,
JsonNode.OverwriteMode overwriteMode,
boolean preferIndex,
JsonNode toReplace) |
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. |
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.
|
JsonNode |
required(int index)
Method is functionally equivalent to
path(index).required()
and can be used to check that this node is an ArrayNode (that is, represents
JSON Array value) and has value for specified index
(but note that value may be explicit JSON null value). |
JsonNode |
required(String fieldName)
Method is functionally equivalent to
path(fieldName).required()
and can be used to check that this node is an ObjectNode (that is, represents
JSON Object value) and has value for specified property with key fieldName
(but note that value may be explicit JSON null value). |
abstract void |
serialize(com.fasterxml.jackson.core.JsonGenerator g,
SerializerProvider ctxt)
Method called to serialize node instances using given generator.
|
abstract void |
serializeWithType(com.fasterxml.jackson.core.JsonGenerator g,
SerializerProvider ctxt,
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.
|
com.fasterxml.jackson.core.JsonParser |
traverse() |
com.fasterxml.jackson.core.JsonParser |
traverse(com.fasterxml.jackson.core.ObjectCodec codec) |
ArrayNode |
withArray(com.fasterxml.jackson.core.JsonPointer ptr,
JsonNode.OverwriteMode overwriteMode,
boolean preferIndex)
Method that can be called on Object or Array nodes, to access a Array-valued
node pointed to by given
JsonPointer , if such a node exists:
or if not, an attempt is made to create one and return it. |
ObjectNode |
withObject(com.fasterxml.jackson.core.JsonPointer ptr,
JsonNode.OverwriteMode overwriteMode,
boolean preferIndex)
Method that can be called on Object or Array nodes, to access a Object-valued
node pointed to by given
JsonPointer , if such a node exists:
or if not, an attempt is made to create one and return it. |
_at, _reportRequiredViolation, _this, asBoolean, asBoolean, asDouble, asDouble, asInt, asInt, asLong, asLong, asText, asText, at, at, bigIntegerValue, binaryValue, booleanValue, canConvertToExactIntegral, 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, isEmpty, isFloat, isFloatingPointNumber, isInt, isIntegralNumber, isLong, isMissingNode, isNull, isNumber, isObject, isPojo, isShort, isTextual, isValueNode, iterator, longValue, numberValue, path, path, require, requiredAt, requiredAt, requireNonNull, shortValue, size, textValue, with, withArray, withArray, withArray, withObject, withObject, withObject
isEmpty
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
forEach, spliterator
public final JsonNode findPath(String fieldName)
JsonNode
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.public JsonNode required(String fieldName)
JsonNode
path(fieldName).required()
and can be used to check that this node is an ObjectNode
(that is, represents
JSON Object value) and has value for specified property with key fieldName
(but note that value may be explicit JSON null value).
If this node is Object Node and has value for specified property, matching value
is returned; otherwise IllegalArgumentException
is thrown.public JsonNode required(int index)
JsonNode
path(index).required()
and can be used to check that this node is an ArrayNode
(that is, represents
JSON Array value) and has value for specified index
(but note that value may be explicit JSON null value).
If this node is Array Node and has value for specified index, value at index
is returned; otherwise IllegalArgumentException
is thrown.public com.fasterxml.jackson.core.JsonParser traverse()
traverse
in interface com.fasterxml.jackson.core.TreeNode
public com.fasterxml.jackson.core.JsonParser traverse(com.fasterxml.jackson.core.ObjectCodec codec)
traverse
in interface com.fasterxml.jackson.core.TreeNode
public abstract com.fasterxml.jackson.core.JsonToken asToken()
JsonToken
that equivalent
stream event would produce (for most nodes there is just
one token but for structured/container types multiple)asToken
in interface com.fasterxml.jackson.core.TreeNode
public com.fasterxml.jackson.core.JsonParser.NumberType numberType()
numberType
in interface com.fasterxml.jackson.core.TreeNode
public ObjectNode withObject(com.fasterxml.jackson.core.JsonPointer ptr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex)
JsonNode
JsonPointer
, if such a node exists:
or if not, an attempt is made to create one and return it.
For example, on document
{ "a" : { "b" : { "c" : 13 } } }calling method with
JsonPointer
of /a/b
would return
ObjectNode
{ "c" : 13 }
In cases where path leads to "missing" nodes, a path is created.
So, for example, on above document, and
JsonPointer
of /a/x
an empty ObjectNode
would
be returned and the document would look like:
{ "a" : { "b" : { "c" : 13 }, "x" : { } } }Finally, if the path is incompatible with the document -- there is an existing
JsonNode
through which expression cannot go -- a replacement is
attempted if (and only if) conversion is allowed as per overwriteMode
passed in. For example, with above document and expression of /a/b/c
,
conversion is allowed if passing OverwriteMode.SCALARS
or
OvewriteMode.ALL
, and resulting document would look like:
{ "a" : { "b" : { "c" : { } }, "x" : { } } }but if different modes (
NONE
or NULLS
) is passed, an exception
is thrown instead.withObject
in class JsonNode
ptr
- Pointer that indicates path to use for ObjectNode
value to return
(potentially creating one as necessary)overwriteMode
- Defines which node types may be converted in case of
incompatible JsonPointer
expression: if conversion not allowed,
UnsupportedOperationException
is thrown.preferIndex
- When creating a path (for empty or replacement), and path
contains segment that may be an array index (simple integer number like
3
), whether to construct an ArrayNode
(true
) or
ObjectNode
(false
). In latter case matching property with
quoted number (like "3"
) is used within Object.ObjectNode
found or createdprotected ObjectNode _withObject(com.fasterxml.jackson.core.JsonPointer origPtr, com.fasterxml.jackson.core.JsonPointer currentPtr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex)
protected void _withXxxVerifyReplace(com.fasterxml.jackson.core.JsonPointer origPtr, com.fasterxml.jackson.core.JsonPointer currentPtr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex, JsonNode toReplace)
protected boolean _withXxxMayReplace(JsonNode node, JsonNode.OverwriteMode overwriteMode)
public ArrayNode withArray(com.fasterxml.jackson.core.JsonPointer ptr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex)
JsonNode
JsonPointer
, if such a node exists:
or if not, an attempt is made to create one and return it.
For example, on document
{ "a" : { "b" : [ 1, 2 ] } }calling method with
JsonPointer
of /a/b
would return
Array
[ 1, 2 ]
In cases where path leads to "missing" nodes, a path is created.
So, for example, on above document, and
JsonPointer
of /a/x
an empty ArrayNode
would
be returned and the document would look like:
{ "a" : { "b" : [ 1, 2 ], "x" : [ ] } }Finally, if the path is incompatible with the document -- there is an existing
JsonNode
through which expression cannot go -- a replacement is
attempted if (and only if) conversion is allowed as per overwriteMode
passed in. For example, with above document and expression of /a/b/0
,
conversion is allowed if passing OverwriteMode.SCALARS
or
OvewriteMode.ALL
, and resulting document would look like:
{ "a" : { "b" : [ [ ], 2 ], "x" : [ ] } }but if different modes (
NONE
or NULLS
) is passed, an exception
is thrown instead.withArray
in class JsonNode
ptr
- Pointer that indicates path to use for ArrayNode
value to return
(potentially creating it as necessary)overwriteMode
- Defines which node types may be converted in case of
incompatible JsonPointer
expression: if conversion not allowed,
an exception is thrown.preferIndex
- When creating a path (for empty or replacement), and path
contains segment that may be an array index (simple integer number like
3
), whether to construct an ArrayNode
(true
) or
ObjectNode
(false
). In latter case matching property with
quoted number (like "3"
) is used within Object.ArrayNode
found or createdprotected ArrayNode _withArray(com.fasterxml.jackson.core.JsonPointer origPtr, com.fasterxml.jackson.core.JsonPointer currentPtr, JsonNode.OverwriteMode overwriteMode, boolean preferIndex)
public abstract void serialize(com.fasterxml.jackson.core.JsonGenerator g, SerializerProvider ctxt) throws IOException
serialize
in interface JsonSerializable
IOException
public abstract void serializeWithType(com.fasterxml.jackson.core.JsonGenerator g, SerializerProvider ctxt, TypeSerializer typeSer) throws IOException
serializeWithType
in interface JsonSerializable
IOException
public String toString()
JsonNode
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.
public String toPrettyString()
JsonNode
JsonNode.toString()
that will serialize this node using
Jackson default pretty-printer.toPrettyString
in class JsonNode
protected <T> T _reportWrongNodeType(String msgTemplate, Object... args)
UnsupportedOperationException
as a result of
this node being of wrong typeprotected <T> T _reportWrongNodeOperation(String msgTemplate, Object... args)
protected com.fasterxml.jackson.core.JsonPointer _jsonPointerIfValid(String exprOrProperty)
Copyright © 2008–2022 FasterXML. All rights reserved.