Package com.fasterxml.jackson.core
Class JsonStreamContext
java.lang.Object
com.fasterxml.jackson.core.JsonStreamContext
- Direct Known Subclasses:
JsonReadContext
,JsonWriteContext
,TokenFilterContext
Shared base class for streaming processing contexts used during
reading and writing of Json content using Streaming API.
This context is also exposed to applications:
context object can be used by applications to get an idea of
relative position of the parser/generator within json content
being processed. This allows for some contextual processing: for
example, output within Array context can differ from that of
Object context.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
Index of the currently processed entry.protected int
The nesting depth is a count of objects and arrays that have not been closed, `{` and `[` respectively.protected int
Indicates logical type of context as one ofTYPE_xxx
constants.static final int
Indicator for "Array" context.static final int
Indicator for "Object" context.static final int
Indicator for "Root Value" context (has not parent) -
Constructor Summary
ModifierConstructorDescriptionprotected
protected
JsonStreamContext
(int type, int index) protected
Copy constructor used by sub-classes for creating copies for buffering. -
Method Summary
Modifier and TypeMethodDescriptionfinal int
abstract String
Method for accessing name associated with the current location.Method for accessing currently active value being used by data-binding (as the source of streaming data to write, or destination of data being read), at this level in hierarchy.final int
final int
The nesting depth is a count of objects and arrays that have not been closed, `{` and `[` respectively.abstract JsonStreamContext
Accessor for finding parent context of this context; will return null for root context.getStartLocation
(Object srcRef) Deprecated.final String
Deprecated.Since 2.8 usetypeDesc()
insteadboolean
Method that may be called to verify whether this context has valid index: will return `false` before the first entry of Object context or before first element of Array context; otherwise returns `true`.boolean
boolean
Method that may be called to check if this context is either: Object, with at least one entry written (partially or completely) Array, with at least one entry written (partially or completely) and if so, return `true`; otherwise return `false`.final boolean
inArray()
Method that returns true if this context is an Array context; that is, content is being read from or written to a JSON Array.final boolean
inObject()
Method that returns true if this context is an Object context; that is, content is being read from or written to a JSON Object.final boolean
inRoot()
Method that returns true if this context is a Root context; that is, content is being read from or written to without enclosing array or object structure.Factory method for constructing aJsonPointer
that points to the current location within the stream that this context is for, excluding information about "root context" (only relevant for multi-root-value cases)pathAsPointer
(boolean includeRoot) Factory method for constructing aJsonPointer
that points to the current location within the stream that this context is for, optionally including "root value index"void
Method to call to pass value to be returned viagetCurrentValue()
; typically called indirectly throughJsonParser.setCurrentValue(java.lang.Object)
orJsonGenerator.setCurrentValue(java.lang.Object)
).startLocation
(ContentReference srcRef) Optional method that may be used to access starting location of this context: for example, in case of JSON `Object` context, offset at which `[` token was read or written.toString()
Overridden to provide developer readable "JsonPath" representation of the context.typeDesc()
Method for accessing simple type description of current context; either ROOT (for root-level values), OBJECT (for field names and values of JSON Objects) or ARRAY (for values of JSON Arrays)
-
Field Details
-
TYPE_ROOT
public static final int TYPE_ROOTIndicator for "Root Value" context (has not parent)- See Also:
-
TYPE_ARRAY
public static final int TYPE_ARRAYIndicator for "Array" context.- See Also:
-
TYPE_OBJECT
public static final int TYPE_OBJECTIndicator for "Object" context.- See Also:
-
_type
protected int _typeIndicates logical type of context as one ofTYPE_xxx
constants. -
_index
protected int _indexIndex of the currently processed entry. Starts with -1 to signal that no entries have been started, and gets advanced each time a new entry is started, either by encountering an expected separator, or with new values if no separators are expected (the case for root context). -
_nestingDepth
protected int _nestingDepthThe nesting depth is a count of objects and arrays that have not been closed, `{` and `[` respectively.- Since:
- 2.15
-
-
Constructor Details
-
JsonStreamContext
protected JsonStreamContext() -
JsonStreamContext
Copy constructor used by sub-classes for creating copies for buffering.- Parameters:
base
- Context instance to copy type and index from- Since:
- 2.9
-
JsonStreamContext
protected JsonStreamContext(int type, int index)
-
-
Method Details
-
getParent
Accessor for finding parent context of this context; will return null for root context.- Returns:
- Parent context of this context, if any;
null
for Root contexts
-
inArray
public final boolean inArray()Method that returns true if this context is an Array context; that is, content is being read from or written to a JSON Array.- Returns:
True
if this context represents an Array;false
otherwise
-
inRoot
public final boolean inRoot()Method that returns true if this context is a Root context; that is, content is being read from or written to without enclosing array or object structure.- Returns:
True
if this context represents a sequence of Root values;false
otherwise
-
inObject
public final boolean inObject()Method that returns true if this context is an Object context; that is, content is being read from or written to a JSON Object.- Returns:
True
if this context represents an Object;false
otherwise
-
getNestingDepth
public final int getNestingDepth()The nesting depth is a count of objects and arrays that have not been closed, `{` and `[` respectively.- Returns:
- Nesting depth
- Since:
- 2.15
-
getTypeDesc
Deprecated.Since 2.8 usetypeDesc()
instead- Returns:
- Type description String
-
typeDesc
Method for accessing simple type description of current context; either ROOT (for root-level values), OBJECT (for field names and values of JSON Objects) or ARRAY (for values of JSON Arrays)- Returns:
- Type description String
- Since:
- 2.8
-
getEntryCount
public final int getEntryCount()- Returns:
- Number of entries that are complete and started.
-
getCurrentIndex
public final int getCurrentIndex()- Returns:
- Index of the currently processed entry, if any
-
hasCurrentIndex
public boolean hasCurrentIndex()Method that may be called to verify whether this context has valid index: will return `false` before the first entry of Object context or before first element of Array context; otherwise returns `true`.- Returns:
True
if this context has value index to access,false
otherwise- Since:
- 2.9
-
hasPathSegment
public boolean hasPathSegment()Method that may be called to check if this context is either:- Object, with at least one entry written (partially or completely)
- Array, with at least one entry written (partially or completely)
Method is mostly used to determine whether this context should be used for constructing
JsonPointer
- Returns:
True
if this context has value path segment to access,false
otherwise- Since:
- 2.9
-
getCurrentName
Method for accessing name associated with the current location. Non-null forFIELD_NAME
and value events that directly follow field names; null for root level and array values.- Returns:
- Current field name within context, if any;
null
if none
-
hasCurrentName
public boolean hasCurrentName()- Returns:
True
if a call togetCurrentName()
would return non-null
name;false
otherwise- Since:
- 2.9
-
getCurrentValue
Method for accessing currently active value being used by data-binding (as the source of streaming data to write, or destination of data being read), at this level in hierarchy.Note that "current value" is NOT populated (or used) by Streaming parser or generator; it is only used by higher-level data-binding functionality. The reason it is included here is that it can be stored and accessed hierarchically, and gets passed through data-binding.
- Returns:
- Currently active value, if one has been assigned.
- Since:
- 2.5
-
setCurrentValue
Method to call to pass value to be returned viagetCurrentValue()
; typically called indirectly throughJsonParser.setCurrentValue(java.lang.Object)
orJsonGenerator.setCurrentValue(java.lang.Object)
).- Parameters:
v
- Current value to assign to this context- Since:
- 2.5
-
pathAsPointer
Factory method for constructing aJsonPointer
that points to the current location within the stream that this context is for, excluding information about "root context" (only relevant for multi-root-value cases)- Returns:
- Pointer instance constructed
- Since:
- 2.9
-
pathAsPointer
Factory method for constructing aJsonPointer
that points to the current location within the stream that this context is for, optionally including "root value index"- Parameters:
includeRoot
- Whether root-value offset is included as the first segment or not;- Returns:
- Pointer instance constructed
- Since:
- 2.9
-
startLocation
Optional method that may be used to access starting location of this context: for example, in case of JSON `Object` context, offset at which `[` token was read or written. Often used for error reporting purposes. Implementations that do not keep track of such location are expected to returnJsonLocation.NA
; this is what the default implementation does.- Parameters:
srcRef
- Source reference needed to construct location instance- Returns:
- Location pointing to the point where the context
start marker was found (or written); never
null
. - Since:
- 2.13
-
getStartLocation
Deprecated.Since 2.13 usestartLocation(com.fasterxml.jackson.core.io.ContentReference)
instead- Parameters:
srcRef
- Source reference needed to construct location instance- Returns:
- Location pointing to the point where the context
start marker was found (or written); never
null
. - Since:
- 2.9
-
toString
Overridden to provide developer readable "JsonPath" representation of the context.- Overrides:
toString
in classObject
- Returns:
- Simple developer-readable description this context layer
(note: NOT constructed with parents, unlike
pathAsPointer()
) - Since:
- 2.9
-
startLocation(com.fasterxml.jackson.core.io.ContentReference)
instead