Package com.fasterxml.jackson.core.json
Class JsonGeneratorImpl
- java.lang.Object
-
- com.fasterxml.jackson.core.JsonGenerator
-
- com.fasterxml.jackson.core.base.GeneratorBase
-
- com.fasterxml.jackson.core.json.JsonGeneratorImpl
-
- All Implemented Interfaces:
Versioned
,java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
- Direct Known Subclasses:
UTF8JsonGenerator
,WriterBasedJsonGenerator
public abstract class JsonGeneratorImpl extends GeneratorBase
Intermediate base class shared by JSON-backed generators likeUTF8JsonGenerator
andWriterBasedJsonGenerator
.- Since:
- 2.1
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonGenerator
JsonGenerator.Feature
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_cfgUnqNames
Flag that is set if quoting is not to be added around JSON Object property names.protected CharacterEscapes
_characterEscapes
Definition of custom character escapes to use for generators created by this factory, if any.protected IOContext
_ioContext
protected int
_maximumNonEscapedChar
Value between 128 (0x80) and 65535 (0xFFFF) that indicates highest Unicode code point that will not need escaping; or 0 to indicate that all characters can be represented without escaping.protected int[]
_outputEscapes
Currently active set of output escape code definitions (whether and how to escape or not) for 7-bit ASCII range (first 128 character codes).protected SerializableString
_rootValueSeparator
Separator to use, if any, between root-level values.protected static JacksonFeatureSet<StreamWriteCapability>
JSON_WRITE_CAPABILITIES
Default capabilities for JSON generator implementations which do not different from "general textual" defaultsprotected static int[]
sOutputEscapes
This is the default set of escape codes, over 7-bit ASCII range (first 128 character codes), used for single-byte UTF-8 characters.-
Fields inherited from class com.fasterxml.jackson.core.base.GeneratorBase
_cfgNumbersAsStrings, _closed, _features, _objectCodec, _writeContext, DERIVED_FEATURES_MASK, MAX_BIG_DECIMAL_SCALE, SURR1_FIRST, SURR1_LAST, SURR2_FIRST, SURR2_LAST, WRITE_BINARY, WRITE_BOOLEAN, WRITE_NULL, WRITE_NUMBER, WRITE_RAW, WRITE_STRING
-
Fields inherited from class com.fasterxml.jackson.core.JsonGenerator
_cfgPrettyPrinter, DEFAULT_BINARY_WRITE_CAPABILITIES, DEFAULT_TEXTUAL_WRITE_CAPABILITIES, DEFAULT_WRITE_CAPABILITIES
-
-
Constructor Summary
Constructors Constructor Description JsonGeneratorImpl(IOContext ctxt, int features, ObjectCodec codec)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
_checkStdFeatureChanges(int newFeatureFlags, int changedFeatures)
Helper method called to verify changes to standard features.protected void
_reportCantWriteValueExpectName(java.lang.String typeMsg)
protected void
_verifyPrettyValueWrite(java.lang.String typeMsg, int status)
JsonGenerator
disable(JsonGenerator.Feature f)
Method for disabling specified feature (checkJsonGenerator.Feature
for list of features)JsonGenerator
enable(JsonGenerator.Feature f)
Method for enabling specified generator feature: checkJsonGenerator.Feature
for list of available features.CharacterEscapes
getCharacterEscapes()
Method for accessing custom escapes factory uses forJsonGenerator
s it creates.int
getHighestEscapedChar()
Accessor method for testing what is the highest unescaped character configured for this generator.JacksonFeatureSet<StreamWriteCapability>
getWriteCapabilities()
Accessor for getting metadata on capabilities of this generator, based on underlying data format being read (directly or indirectly).JsonGenerator
setCharacterEscapes(CharacterEscapes esc)
Method for defining custom escapes factory uses forJsonGenerator
s it creates.JsonGenerator
setHighestNonEscapedChar(int charCode)
Method that can be called to request that generator escapes all character codes above specified code point (if positive value); or, to not escape any characters except for ones that must be escaped for the data format (if -1).JsonGenerator
setRootValueSeparator(SerializableString sep)
Method that allows overriding String used for separating root-level JSON values (default is single space character)Version
version()
Implemented with standard version number detection algorithm, typically using a simple generated class, with information extracted from Maven project file during build.-
Methods inherited from class com.fasterxml.jackson.core.base.GeneratorBase
_asString, _constructDefaultPrettyPrinter, _decodeSurrogate, _releaseBuffers, _verifyValueWrite, close, flush, getCodec, getCurrentValue, getFeatureMask, getOutputContext, isClosed, isEnabled, overrideStdFeatures, setCodec, setCurrentValue, setFeatureMask, useDefaultPrettyPrinter, writeBinary, writeFieldName, writeObject, writeRawValue, writeRawValue, writeRawValue, writeRawValue, writeStartObject, writeString, writeTree
-
Methods inherited from class com.fasterxml.jackson.core.JsonGenerator
_copyCurrentContents, _reportError, _reportUnsupportedOperation, _throwInternal, _verifyOffsets, _writeSimpleObject, canOmitFields, canUseSchema, canWriteBinaryNatively, canWriteFormattedNumbers, canWriteObjectId, canWriteTypeId, configure, copyCurrentEvent, copyCurrentStructure, getFormatFeatures, getOutputBuffered, getOutputTarget, getPrettyPrinter, getSchema, isEnabled, overrideFormatFeatures, setPrettyPrinter, setSchema, writeArray, writeArray, writeArray, writeArray, writeArrayFieldStart, writeBinary, writeBinary, writeBinary, writeBinary, writeBinaryField, writeBoolean, writeBooleanField, writeEmbeddedObject, writeEndArray, writeEndObject, writeFieldId, writeFieldName, writeNull, writeNullField, writeNumber, writeNumber, writeNumber, writeNumber, writeNumber, writeNumber, writeNumber, writeNumber, writeNumber, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeObjectField, writeObjectFieldStart, writeObjectId, writeObjectRef, writeOmittedField, writeRaw, writeRaw, writeRaw, writeRaw, writeRaw, writeRawUTF8String, writeStartArray, writeStartArray, writeStartArray, writeStartArray, writeStartObject, writeStartObject, writeString, writeString, writeString, writeStringField, writeTypeId, writeTypePrefix, writeTypeSuffix, writeUTF8String
-
-
-
-
Field Detail
-
sOutputEscapes
protected static final int[] sOutputEscapes
This is the default set of escape codes, over 7-bit ASCII range (first 128 character codes), used for single-byte UTF-8 characters.
-
JSON_WRITE_CAPABILITIES
protected static final JacksonFeatureSet<StreamWriteCapability> JSON_WRITE_CAPABILITIES
Default capabilities for JSON generator implementations which do not different from "general textual" defaults- Since:
- 2.12
-
_ioContext
protected final IOContext _ioContext
-
_outputEscapes
protected int[] _outputEscapes
Currently active set of output escape code definitions (whether and how to escape or not) for 7-bit ASCII range (first 128 character codes). Defined separately to make potentially customizable
-
_maximumNonEscapedChar
protected int _maximumNonEscapedChar
Value between 128 (0x80) and 65535 (0xFFFF) that indicates highest Unicode code point that will not need escaping; or 0 to indicate that all characters can be represented without escaping. Typically used to force escaping of some portion of character set; for example to always escape non-ASCII characters (if value was 127).NOTE: not all sub-classes make use of this setting.
-
_characterEscapes
protected CharacterEscapes _characterEscapes
Definition of custom character escapes to use for generators created by this factory, if any. If null, standard data format specific escapes are used.
-
_rootValueSeparator
protected SerializableString _rootValueSeparator
Separator to use, if any, between root-level values.- Since:
- 2.1
-
_cfgUnqNames
protected boolean _cfgUnqNames
Flag that is set if quoting is not to be added around JSON Object property names.- Since:
- 2.7
-
-
Constructor Detail
-
JsonGeneratorImpl
public JsonGeneratorImpl(IOContext ctxt, int features, ObjectCodec codec)
-
-
Method Detail
-
version
public Version version()
Description copied from class:GeneratorBase
Implemented with standard version number detection algorithm, typically using a simple generated class, with information extracted from Maven project file during build.- Specified by:
version
in interfaceVersioned
- Overrides:
version
in classGeneratorBase
- Returns:
- Version of this generator (derived from version declared for
jackson-core
jar that contains the class
-
enable
public JsonGenerator enable(JsonGenerator.Feature f)
Description copied from class:JsonGenerator
Method for enabling specified generator feature: checkJsonGenerator.Feature
for list of available features.- Overrides:
enable
in classGeneratorBase
- Parameters:
f
- Feature to enable- Returns:
- This generator, to allow call chaining
-
disable
public JsonGenerator disable(JsonGenerator.Feature f)
Description copied from class:JsonGenerator
Method for disabling specified feature (checkJsonGenerator.Feature
for list of features)- Overrides:
disable
in classGeneratorBase
- Parameters:
f
- Feature to disable- Returns:
- This generator, to allow call chaining
-
_checkStdFeatureChanges
protected void _checkStdFeatureChanges(int newFeatureFlags, int changedFeatures)
Description copied from class:GeneratorBase
Helper method called to verify changes to standard features.- Overrides:
_checkStdFeatureChanges
in classGeneratorBase
- Parameters:
newFeatureFlags
- Bitflag of standard features after they were changedchangedFeatures
- Bitflag of standard features for which setting did change
-
setHighestNonEscapedChar
public JsonGenerator setHighestNonEscapedChar(int charCode)
Description copied from class:JsonGenerator
Method that can be called to request that generator escapes all character codes above specified code point (if positive value); or, to not escape any characters except for ones that must be escaped for the data format (if -1). To force escaping of all non-ASCII characters, for example, this method would be called with value of 127.Note that generators are NOT required to support setting of value higher than 127, because there are other ways to affect quoting (or lack thereof) of character codes between 0 and 127. Not all generators support concept of escaping, either; if so, calling this method will have no effect.
Default implementation does nothing; sub-classes need to redefine it according to rules of supported data format.
- Overrides:
setHighestNonEscapedChar
in classJsonGenerator
- Parameters:
charCode
- Either -1 to indicate that no additional escaping is to be done; or highest code point not to escape (meaning higher ones will be), if positive value.- Returns:
- This generator, to allow call chaining
-
getHighestEscapedChar
public int getHighestEscapedChar()
Description copied from class:JsonGenerator
Accessor method for testing what is the highest unescaped character configured for this generator. This may be either positive value (when escaping configuration has been set and is in effect), or 0 to indicate that no additional escaping is in effect. Some generators may not support additional escaping: for example, generators for binary formats that do not use escaping should simply return 0.- Overrides:
getHighestEscapedChar
in classJsonGenerator
- Returns:
- Currently active limitation for highest non-escaped character, if defined; or 0 to indicate no additional escaping is performed.
-
setCharacterEscapes
public JsonGenerator setCharacterEscapes(CharacterEscapes esc)
Description copied from class:JsonGenerator
Method for defining custom escapes factory uses forJsonGenerator
s it creates.Default implementation does nothing and simply returns this instance.
- Overrides:
setCharacterEscapes
in classJsonGenerator
- Parameters:
esc
-CharacterEscapes
to configure this generator to use, if any;null
if none- Returns:
- This generator, to allow call chaining
-
getCharacterEscapes
public CharacterEscapes getCharacterEscapes()
Method for accessing custom escapes factory uses forJsonGenerator
s it creates.- Overrides:
getCharacterEscapes
in classJsonGenerator
- Returns:
CharacterEscapes
configured for this generator, if any;null
if none
-
setRootValueSeparator
public JsonGenerator setRootValueSeparator(SerializableString sep)
Description copied from class:JsonGenerator
Method that allows overriding String used for separating root-level JSON values (default is single space character)Default implementation throws
UnsupportedOperationException
.- Overrides:
setRootValueSeparator
in classJsonGenerator
- Parameters:
sep
- Separator to use, if any; null means that no separator is automatically added- Returns:
- This generator, to allow call chaining
-
getWriteCapabilities
public JacksonFeatureSet<StreamWriteCapability> getWriteCapabilities()
Description copied from class:JsonGenerator
Accessor for getting metadata on capabilities of this generator, based on underlying data format being read (directly or indirectly).- Overrides:
getWriteCapabilities
in classJsonGenerator
- Returns:
- Set of write capabilities for content written using this generator
-
_verifyPrettyValueWrite
protected void _verifyPrettyValueWrite(java.lang.String typeMsg, int status) throws java.io.IOException
- Throws:
java.io.IOException
-
_reportCantWriteValueExpectName
protected void _reportCantWriteValueExpectName(java.lang.String typeMsg) throws java.io.IOException
- Throws:
java.io.IOException
-
-