com.fasterxml.jackson.core.json

## Class JsonWriteContext

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

    public class JsonWriteContext
    extends JsonStreamContext

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

### Field Summary

Fields
`protected JsonWriteContext` `_child`
`protected String` `_currentName` Name of the field of which value is to be written; only used for OBJECT contexts
`protected Object` `_currentValue`
`protected DupDetector` `_dups`
`protected boolean` `_gotName` Marker used to indicate that we just wrote a name, and now expect a value to write
`protected JsonWriteContext` `_parent` Parent context for this context; null for root context.
`static int` `STATUS_EXPECT_NAME`
`static int` `STATUS_EXPECT_VALUE`
`static int` `STATUS_OK_AFTER_COLON`
`static int` `STATUS_OK_AFTER_COMMA`
`static int` `STATUS_OK_AFTER_SPACE`
`static int` `STATUS_OK_AS_IS`

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

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

### Constructor Summary

Constructors
`protected` `JsonWriteContext(int type, JsonWriteContext parent, DupDetector dups)`
`protected` `JsonWriteContext(int type, JsonWriteContext parent, DupDetector dups, Object currValue)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`JsonWriteContext` `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).
`JsonWriteContext` `createChildArrayContext()`
`JsonWriteContext` `createChildArrayContext(Object currValue)`
`JsonWriteContext` `createChildObjectContext()`
`JsonWriteContext` `createChildObjectContext(Object currValue)`
`static JsonWriteContext` `createRootContext()` Deprecated. Since 2.3; use method that takes argument
`static JsonWriteContext` `createRootContext(DupDetector dd)`
`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()`
`JsonWriteContext` `getParent()` Accessor for finding parent context of this context; will return null for root context.
`boolean` `hasCurrentName()`
`JsonWriteContext` `reset(int type)` Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing.
`JsonWriteContext` `reset(int type, Object currValue)` Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing.
`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)`).
`JsonWriteContext` `withDupDetector(DupDetector dups)`
`int` `writeFieldName(String name)` Method that writer is to call before it writes a name of Object property.
`int` `writeValue()`

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

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

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

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

### Field Detail

#### STATUS_OK_AS_IS

    public static final int STATUS_OK_AS_IS

See Also:
  Constant Field Values

#### STATUS_OK_AFTER_COMMA

    public static final int STATUS_OK_AFTER_COMMA

See Also:
  Constant Field Values

#### STATUS_OK_AFTER_COLON

    public static final int STATUS_OK_AFTER_COLON

See Also:
  Constant Field Values

#### STATUS_OK_AFTER_SPACE

    public static final int STATUS_OK_AFTER_SPACE

See Also:
  Constant Field Values

#### STATUS_EXPECT_VALUE

    public static final int STATUS_EXPECT_VALUE

See Also:
  Constant Field Values

#### STATUS_EXPECT_NAME

    public static final int STATUS_EXPECT_NAME

See Also:
  Constant Field Values

#### _parent

    protected final JsonWriteContext _parent

Parent context for this context; null for root context.

#### _dups

    protected DupDetector _dups

#### _child

    protected JsonWriteContext _child

#### _currentName

    protected String _currentName

Name of the field of which value is to be written; only used for OBJECT contexts

#### _currentValue

    protected Object _currentValue

Since:
  2.5

#### _gotName

    protected boolean _gotName

Marker used to indicate that we just wrote a name, and now expect a value to write

### Constructor Detail

#### JsonWriteContext

    protected JsonWriteContext(int type,
                               JsonWriteContext parent,
                               DupDetector dups)

#### JsonWriteContext

    protected JsonWriteContext(int type,
                               JsonWriteContext parent,
                               DupDetector dups,
                               Object currValue)

### Method Detail

#### reset

    public JsonWriteContext reset(int type)

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
Returns:
  This context instance to allow call-chaining

#### reset

    public JsonWriteContext reset(int type,
                                  Object currValue)

Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing. Clears up state, changes type to one specified, assigns "current value"; 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
  `currValue` - Current value to assign to this context node
Returns:
  This context instance to allow call-chaining
Since:
  2.10

#### withDupDetector

    public JsonWriteContext 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

    @Deprecated
    public static JsonWriteContext createRootContext()

Deprecated. Since 2.3; use method that takes argument

Returns:
  Context instance created

#### createRootContext

    public static JsonWriteContext createRootContext(DupDetector dd)

#### createChildArrayContext

    public JsonWriteContext createChildArrayContext()

#### createChildArrayContext

    public JsonWriteContext createChildArrayContext(Object currValue)

#### createChildObjectContext

    public JsonWriteContext createChildObjectContext()

#### createChildObjectContext

    public JsonWriteContext createChildObjectContext(Object currValue)

#### getParent

    public final JsonWriteContext 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

#### getCurrentName

    public final 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

#### clearAndGetParent

    public JsonWriteContext 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()

#### writeFieldName

    public int writeFieldName(String name)
                       throws JsonProcessingException

Method that writer is to call before it writes a name of Object property.

Parameters:
  `name` - Property name being written
Returns:
  Index of the field entry (0-based)
Throws:
  `JsonProcessingException` - if duplicate check restriction is violated

#### writeValue

    public int writeValue()