JsonWriteContext
Date: 2016-12-03

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
    Modifier and Type | Field and Description
    --- | ---
    `protected JsonWriteContext` | `_child`
    `protected java.lang.String` | `_currentName` Name of the field of which value is to be written; only used for OBJECT contexts
    `protected java.lang.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, _type, TYPE_ARRAY, TYPE_OBJECT, TYPE_ROOT`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `JsonWriteContext(int type, JsonWriteContext parent, DupDetector dups)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `appendDesc(java.lang.StringBuilder sb)`
    `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` | `createChildObjectContext()`
    `static JsonWriteContext` | `createRootContext()` Deprecated. Since 2.3; use method that takes argument
    `static JsonWriteContext` | `createRootContext(DupDetector dd)`
    `java.lang.String` | `getCurrentName()` Method for accessing name associated with the current location.
    `java.lang.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.
    `protected JsonWriteContext` | `reset(int type)`
    `void` | `setCurrentValue(java.lang.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)`).
    `java.lang.String` | `toString()` Overridden to provide developer writeable "JsonPath" representation of the context.
    `JsonWriteContext` | `withDupDetector(DupDetector dups)`
    `int` | `writeFieldName(java.lang.String name)` Method that writer is to call before it writes a field name.
    `int` | `writeValue()`

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

      `getCurrentIndex, getEntryCount, getTypeDesc, inArray, inObject, inRoot, 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 java.lang.String _currentName

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

    - #### _currentValue

          protected java.lang.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)

  - ### Method Detail

    - #### reset

          protected JsonWriteContext reset(int type)

    - #### withDupDetector

          public JsonWriteContext withDupDetector(DupDetector dups)

    - #### getCurrentValue

          public java.lang.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(java.lang.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`

    - #### createRootContext

          @Deprecated
          public static JsonWriteContext createRootContext()

      Deprecated. Since 2.3; use method that takes argument

    - #### createRootContext

          public static JsonWriteContext createRootContext(DupDetector dd)

    - #### createChildArrayContext

          public JsonWriteContext createChildArrayContext()

    - #### createChildObjectContext

          public JsonWriteContext createChildObjectContext()

    - #### 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`

    - #### getCurrentName

          public final java.lang.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`

    - #### 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`.
      Since:
        2.7

    - #### getDupDetector

          public DupDetector getDupDetector()

    - #### writeFieldName

          public int writeFieldName(java.lang.String name)
                             throws JsonProcessingException

      Method that writer is to call before it writes a field name.
      Returns:
        Index of the field entry (0-based)
      Throws:
        `JsonProcessingException`

    - #### writeValue

          public int writeValue()

    - #### appendDesc

          protected void appendDesc(java.lang.StringBuilder sb)

    - #### toString

          public java.lang.String toString()

      Overridden to provide developer writeable "JsonPath" representation of the context.
      Overrides:
        `toString` in class `java.lang.Object`