com.fasterxml.jackson.core.json

## Class JsonReadContext

- java.lang.Object
- - com.fasterxml.jackson.core.JsonStreamContext
  - - com.fasterxml.jackson.core.json.JsonReadContext

    public class JsonReadContext
    extends JsonStreamContext

Extension of `JsonStreamContext`, which implements core methods needed, and also exposes more complete API to parser implementation classes.

NOTE: non-final since 2.19

### Field Summary

Fields
`protected JsonReadContext` `_child`
`protected int` `_columnNr`
`protected String` `_currentName`
`protected Object` `_currentValue`
`protected DupDetector` `_dups`
`protected int` `_lineNr`
`protected JsonReadContext` `_parent` Parent context for this context; null for root context.

### Fields inherited from class com.fasterxml.jackson.core.JsonStreamContext

`_index, _nestingDepth, _type, TYPE_ARRAY, TYPE_OBJECT, TYPE_ROOT`

### Constructor Summary

Constructors
Constructor and Description
`JsonReadContext(JsonReadContext parent, DupDetector dups, int type, int lineNr, int colNr)` Deprecated.
`JsonReadContext(JsonReadContext parent, int nestingDepth, DupDetector dups, int type, int lineNr, int colNr)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`JsonReadContext` `clearAndGetParent()` Method that can be used to both clear the accumulated references (specifically value set with `setCurrentValue(Object)`) that should not be retained, and returns parent (as would `getParent()` do).
`JsonReadContext` `createChildArrayContext(int lineNr, int colNr)`
`JsonReadContext` `createChildObjectContext(int lineNr, int colNr)`
`static JsonReadContext` `createRootContext(DupDetector dups)`
`static JsonReadContext` `createRootContext(int lineNr, int colNr, DupDetector dups)`
`boolean` `expectComma()`
`String` `getCurrentName()` Method for accessing name associated with the current location.
`Object` `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.
`DupDetector` `getDupDetector()`
`JsonReadContext` `getParent()` Accessor for finding parent context of this context; will return null for root context.
`JsonLocation` `getStartLocation(Object rawSrc)` Deprecated.
`boolean` `hasCurrentName()`
`void` `reset(int type, int lineNr, int colNr)` Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing.
`void` `setCurrentName(String name)`
`void` `setCurrentValue(Object v)` Method to call to pass value to be returned via `JsonStreamContext.getCurrentValue()`; typically called indirectly through `JsonParser.setCurrentValue(java.lang.Object)` or `JsonGenerator.setCurrentValue(java.lang.Object)`).
`JsonLocation` `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.
`JsonReadContext` `withDupDetector(DupDetector dups)`

### Methods inherited from class com.fasterxml.jackson.core.JsonStreamContext

`getCurrentIndex, getEntryCount, getNestingDepth, getTypeDesc, hasCurrentIndex, hasPathSegment, inArray, inObject, inRoot, pathAsPointer, pathAsPointer, toString, typeDesc`

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

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

### Field Detail

#### _parent

    protected final JsonReadContext _parent

Parent context for this context; null for root context.

#### _dups

    protected DupDetector _dups

#### _child

    protected JsonReadContext _child

#### _currentName

    protected String _currentName

#### _currentValue

    protected Object _currentValue

Since:
  2.5

#### _lineNr

    protected int _lineNr

#### _columnNr

    protected int _columnNr

### Constructor Detail

#### JsonReadContext

    public JsonReadContext(JsonReadContext parent,
                           int nestingDepth,
                           DupDetector dups,
                           int type,
                           int lineNr,
                           int colNr)

Parameters:
  `parent` - Parent context, if any (`null` for Root context)
  `nestingDepth` - Number of parents this context has (0 for Root context)
  `dups` - Detector used for checking duplicate names, if any (`null` if none)
  `type` - Type to assign to this context node
  `lineNr` - Line of the starting position of this context
  `colNr` - Column of the starting position of this context
Since:
  2.15

#### JsonReadContext

    @Deprecated
    public JsonReadContext(JsonReadContext parent,
                                       DupDetector dups,
                                       int type,
                                       int lineNr,
                                       int colNr)

Deprecated.

### Method Detail

#### reset

    public void reset(int type,
                      int lineNr,
                      int colNr)

Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing. Clears up state (including "current value"), changes type to one specified; resets current duplicate-detection state (if any). Parent link left as-is since it is `final`.

NOTE: Public since 2.12.

Parameters:
  `type` - Type to assign to this context node
  `lineNr` - Line of the starting position of this context
  `colNr` - Column of the starting position of this context

#### withDupDetector

    public JsonReadContext withDupDetector(DupDetector dups)

#### getCurrentValue

    public Object getCurrentValue()

Description copied from class: `JsonStreamContext`
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.

Overrides:
  `getCurrentValue` in class `JsonStreamContext`
Returns:
  Currently active value, if one has been assigned.

#### setCurrentValue

    public void setCurrentValue(Object v)

Description copied from class: `JsonStreamContext`
Method to call to pass value to be returned via `JsonStreamContext.getCurrentValue()`; typically called indirectly through `JsonParser.setCurrentValue(java.lang.Object)` or `JsonGenerator.setCurrentValue(java.lang.Object)`).

Overrides:
  `setCurrentValue` in class `JsonStreamContext`
Parameters:
  `v` - Current value to assign to this context

#### createRootContext

    public static JsonReadContext createRootContext(int lineNr,
                                                    int colNr,
                                                    DupDetector dups)

#### createRootContext

    public static JsonReadContext createRootContext(DupDetector dups)

#### createChildArrayContext

    public JsonReadContext createChildArrayContext(int lineNr,
                                                   int colNr)

#### createChildObjectContext

    public JsonReadContext createChildObjectContext(int lineNr,
                                                    int colNr)

#### getCurrentName

    public String getCurrentName()

Description copied from class: `JsonStreamContext`
Method for accessing name associated with the current location. Non-null for `FIELD_NAME` and value events that directly follow field names; null for root level and array values.

Specified by:
  `getCurrentName` in class `JsonStreamContext`
Returns:
  Current field name within context, if any; `null` if none

#### hasCurrentName

    public boolean hasCurrentName()

Overrides:
  `hasCurrentName` in class `JsonStreamContext`
Returns:
  `True` if a call to `JsonStreamContext.getCurrentName()` would return non-`null` name; `false` otherwise

#### getParent

    public JsonReadContext getParent()

Description copied from class: `JsonStreamContext`
Accessor for finding parent context of this context; will return null for root context.

Specified by:
  `getParent` in class `JsonStreamContext`
Returns:
  Parent context of this context, if any; `null` for Root contexts

#### startLocation

    public JsonLocation startLocation(ContentReference srcRef)

Description copied from class: `JsonStreamContext`
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 return `JsonLocation.NA`; this is what the default implementation does.

Overrides:
  `startLocation` in class `JsonStreamContext`
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`.

#### getStartLocation

    @Deprecated
    public JsonLocation getStartLocation(Object rawSrc)

Deprecated.

Overrides:
  `getStartLocation` in class `JsonStreamContext`
Parameters:
  `rawSrc` - Source reference needed to construct location instance
Returns:
  Location pointing to the point where the context start marker was found (or written); never `null`.

#### clearAndGetParent

    public JsonReadContext clearAndGetParent()

Method that can be used to both clear the accumulated references (specifically value set with `setCurrentValue(Object)`) that should not be retained, and returns parent (as would `getParent()` do). Typically called when closing the active context when encountering `JsonToken.END_ARRAY` or `JsonToken.END_OBJECT`.

Returns:
  Parent context of this context node, if any; `null` for root context
Since:
  2.7

#### getDupDetector

    public DupDetector getDupDetector()

#### expectComma

    public boolean expectComma()

#### setCurrentName

    public void setCurrentName(String name)
                        throws JsonProcessingException

Throws:
  `JsonProcessingException`