public class JsonFactory extends TokenStreamFactory implements Versioned, Serializable
JsonParser
)
and writer (aka generator, JsonGenerator
)
instances.
Factory instances are thread-safe and reusable after configuration (if any). Typically applications and services use only a single globally shared factory instance, unless they need differently configured factories. Factory reuse is important if efficiency matters; most recycling of expensive construct is done on per-factory basis.
Creation of a factory instance is a light-weight operation, and since there is no need for pluggable alternative implementations (as there is no "standard" JSON processor API to implement), the default constructor is used for constructing factory instances.
Modifier and Type | Class and Description |
---|---|
static class |
JsonFactory.Feature
Enumeration that defines all on/off features that can only be
changed for
JsonFactory . |
Modifier and Type | Field and Description |
---|---|
protected ByteQuadsCanonicalizer |
_byteSymbolCanonicalizer
Alternative to the basic symbol table, some stream-based
parsers use different name canonicalization method.
|
protected CharacterEscapes |
_characterEscapes
Definition of custom character escapes to use for generators created
by this factory, if any.
|
protected int |
_factoryFeatures
Currently enabled factory features.
|
protected int |
_generatorFeatures
Currently enabled generator features.
|
protected InputDecorator |
_inputDecorator
Optional helper object that may decorate input sources, to do
additional processing on input during parsing.
|
protected int |
_maximumNonEscapedChar
Optional threshold used for automatically escaping character above certain character
code value: either
0 to indicate that no threshold is specified, or value
at or above 127 to indicate last character code that is NOT automatically escaped
(but depends on other configuration rules for checking). |
protected ObjectCodec |
_objectCodec
Object that implements conversion functionality between
Java objects and JSON content.
|
protected OutputDecorator |
_outputDecorator
Optional helper object that may decorate output object, to do
additional processing on output during content generation.
|
protected int |
_parserFeatures
Currently enabled parser features.
|
protected char |
_quoteChar
Character used for quoting field names (if field name quoting has not
been disabled with
JsonWriteFeature.QUOTE_FIELD_NAMES )
and JSON String values. |
protected CharsToNameCanonicalizer |
_rootCharSymbols
Each factory comes equipped with a shared root symbol table.
|
protected SerializableString |
_rootValueSeparator
Separator used between root-level values, if any; null indicates
"do not add separator".
|
protected StreamReadConstraints |
_streamReadConstraints
Read constraints to use for
JsonParser s constructed using
this factory. |
protected static int |
DEFAULT_FACTORY_FEATURE_FLAGS
Bitfield (set of flags) of all factory features that are enabled by default.
|
protected static int |
DEFAULT_GENERATOR_FEATURE_FLAGS
Bitfield (set of flags) of all generator features that are enabled
by default.
|
protected static int |
DEFAULT_PARSER_FEATURE_FLAGS
Bitfield (set of flags) of all parser features that are enabled
by default.
|
static char |
DEFAULT_QUOTE_CHAR |
static SerializableString |
DEFAULT_ROOT_VALUE_SEPARATOR |
static String |
FORMAT_NAME_JSON
Name used to identify JSON format
(and returned by
getFormatName() |
Modifier | Constructor and Description |
---|---|
|
JsonFactory()
Default constructor used to create factory instances.
|
|
JsonFactory(JsonFactoryBuilder b)
Constructor used by
JsonFactoryBuilder for instantiation. |
protected |
JsonFactory(JsonFactory src,
ObjectCodec codec)
Constructor used when copy()ing a factory instance.
|
|
JsonFactory(ObjectCodec oc) |
protected |
JsonFactory(TSFBuilder<?,?> b,
boolean bogus)
Constructor for subtypes; needed to work around the fact that before 3.0,
this factory has cumbersome dual role as generic type as well as actual
implementation for json.
|
Modifier and Type | Method and Description |
---|---|
protected void |
_checkInvalidCopy(Class<?> exp) |
protected ContentReference |
_createContentReference(Object contentAccessor)
Overridable factory method for constructing
ContentReference
to pass to parser or generator being created; used in cases where no offset
or length is applicable (either irrelevant, or full contents assumed). |
protected ContentReference |
_createContentReference(Object contentAccessor,
int offset,
int length)
Overridable factory method for constructing
ContentReference
to pass to parser or generator being created; used in cases where content
is available in a static buffer with relevant offset and length (mostly
when reading from byte[] , char[] or String ). |
protected IOContext |
_createContext(ContentReference contentRef,
boolean resourceManaged)
Overridable factory method that actually instantiates desired
context object.
|
protected IOContext |
_createContext(Object rawContentRef,
boolean resourceManaged)
Deprecated.
Since 2.13
|
protected JsonGenerator |
_createGenerator(Writer out,
IOContext ctxt)
Overridable factory method that actually instantiates generator for
given
Writer and context object. |
protected IOContext |
_createNonBlockingContext(Object srcRef)
Overridable factory method that actually instantiates desired
context object for async (non-blocking) parsing
|
protected JsonParser |
_createParser(byte[] data,
int offset,
int len,
IOContext ctxt)
Overridable factory method that actually instantiates parser
using given
Reader object for reading content
passed as raw byte array. |
protected JsonParser |
_createParser(char[] data,
int offset,
int len,
IOContext ctxt,
boolean recyclable)
Overridable factory method that actually instantiates parser
using given
char[] object for accessing content. |
protected JsonParser |
_createParser(DataInput input,
IOContext ctxt)
Optional factory method, expected to be overridden
|
protected JsonParser |
_createParser(InputStream in,
IOContext ctxt)
Overridable factory method that actually instantiates desired parser
given
InputStream and context object. |
protected JsonParser |
_createParser(Reader r,
IOContext ctxt)
Overridable factory method that actually instantiates parser
using given
Reader object for reading content. |
protected JsonGenerator |
_createUTF8Generator(OutputStream out,
IOContext ctxt)
Overridable factory method that actually instantiates generator for
given
OutputStream and context object, using UTF-8 encoding. |
protected Writer |
_createWriter(OutputStream out,
JsonEncoding enc,
IOContext ctxt) |
protected DataInput |
_decorate(DataInput in,
IOContext ctxt) |
protected InputStream |
_decorate(InputStream in,
IOContext ctxt) |
protected OutputStream |
_decorate(OutputStream out,
IOContext ctxt) |
protected Reader |
_decorate(Reader in,
IOContext ctxt) |
protected Writer |
_decorate(Writer out,
IOContext ctxt) |
BufferRecycler |
_getBufferRecycler()
Method used by factory to create buffer recycler instances
for parsers and generators.
|
static TSFBuilder<?,?> |
builder()
Main factory method to use for constructing
JsonFactory instances with
different configuration: creates and returns a builder for collecting configuration
settings; instance created by calling build() after all configuration
set. |
boolean |
canHandleBinaryNatively()
Introspection method that higher-level functionality may call
to see whether underlying data format can read and write binary
data natively; that is, embeded it as-is without using encodings
such as Base64.
|
boolean |
canParseAsync()
Introspection method that can be used to check whether this
factory can create non-blocking parsers: parsers that do not
use blocking I/O abstractions but instead use a
NonBlockingInputFeeder . |
boolean |
canUseCharArrays()
Introspection method that can be used by base factory to check
whether access using
char[] is something that actual
parser implementations can take advantage of, over having to
use Reader . |
boolean |
canUseSchema(FormatSchema schema)
Method that can be used to quickly check whether given schema
is something that parsers and/or generators constructed by this
factory could use.
|
JsonFactory |
configure(JsonFactory.Feature f,
boolean state)
Deprecated.
since 2.10 use
TSFBuilder.configure(JsonFactory.Feature, boolean) instead |
JsonFactory |
configure(JsonGenerator.Feature f,
boolean state)
Method for enabling or disabling specified generator feature
(check
JsonGenerator.Feature for list of features) |
JsonFactory |
configure(JsonParser.Feature f,
boolean state)
Method for enabling or disabling specified parser feature
(check
JsonParser.Feature for list of features) |
JsonFactory |
copy()
Method for constructing a new
JsonFactory that has
the same settings as this instance, but is otherwise
independent (i.e. |
JsonGenerator |
createGenerator(DataOutput out)
Convenience method for constructing generator that uses default
encoding of the format (UTF-8 for JSON and most other data formats).
|
JsonGenerator |
createGenerator(DataOutput out,
JsonEncoding enc)
Method for constructing generator for writing content using specified
DataOutput instance. |
JsonGenerator |
createGenerator(File f,
JsonEncoding enc)
Method for constructing JSON generator for writing JSON content
to specified file, overwriting contents it might have (or creating
it if such file does not yet exist).
|
JsonGenerator |
createGenerator(OutputStream out)
Convenience method for constructing generator that uses default
encoding of the format (UTF-8 for JSON and most other data formats).
|
JsonGenerator |
createGenerator(OutputStream out,
JsonEncoding enc)
Method for constructing JSON generator for writing JSON content
using specified output stream.
|
JsonGenerator |
createGenerator(Writer w)
Method for constructing JSON generator for writing JSON content
using specified Writer.
|
JsonGenerator |
createJsonGenerator(OutputStream out)
Deprecated.
Since 2.2, use
createGenerator(OutputStream) instead. |
JsonGenerator |
createJsonGenerator(OutputStream out,
JsonEncoding enc)
Deprecated.
Since 2.2, use
createGenerator(OutputStream, JsonEncoding) instead. |
JsonGenerator |
createJsonGenerator(Writer out)
Deprecated.
Since 2.2, use
createGenerator(Writer) instead. |
JsonParser |
createJsonParser(byte[] data)
Deprecated.
Since 2.2, use
createParser(byte[]) instead. |
JsonParser |
createJsonParser(byte[] data,
int offset,
int len)
Deprecated.
Since 2.2, use
createParser(byte[],int,int) instead. |
JsonParser |
createJsonParser(File f)
Deprecated.
Since 2.2, use
createParser(File) instead. |
JsonParser |
createJsonParser(InputStream in)
Deprecated.
Since 2.2, use
createParser(InputStream) instead. |
JsonParser |
createJsonParser(Reader r)
Deprecated.
Since 2.2, use
createParser(Reader) instead. |
JsonParser |
createJsonParser(String content)
Deprecated.
Since 2.2, use
createParser(String) instead. |
JsonParser |
createJsonParser(URL url)
Deprecated.
Since 2.2, use
createParser(URL) instead. |
JsonParser |
createNonBlockingByteArrayParser()
Optional method for constructing parser for non-blocking parsing
via
ByteArrayFeeder
interface (accessed using JsonParser.getNonBlockingInputFeeder()
from constructed instance). |
JsonParser |
createNonBlockingByteBufferParser()
Optional method for constructing parser for non-blocking parsing
via
ByteBufferFeeder
interface (accessed using JsonParser.getNonBlockingInputFeeder()
from constructed instance). |
JsonParser |
createParser(byte[] data)
Method for constructing parser for parsing
the contents of given byte array.
|
JsonParser |
createParser(byte[] data,
int offset,
int len)
Method for constructing parser for parsing
the contents of given byte array.
|
JsonParser |
createParser(char[] content)
Method for constructing parser for parsing
contents of given char array.
|
JsonParser |
createParser(char[] content,
int offset,
int len)
Method for constructing parser for parsing contents of given char array.
|
JsonParser |
createParser(DataInput in)
Optional method for constructing parser for reading contents from specified
DataInput
instance. |
JsonParser |
createParser(File f)
Method for constructing JSON parser instance to parse
contents of specified file.
|
JsonParser |
createParser(InputStream in)
Method for constructing JSON parser instance to parse
the contents accessed via specified input stream.
|
JsonParser |
createParser(Reader r)
Method for constructing parser for parsing
the contents accessed via specified Reader.
|
JsonParser |
createParser(String content)
Method for constructing parser for parsing
contents of given String.
|
JsonParser |
createParser(URL url)
Method for constructing JSON parser instance to parse
contents of resource reference by given URL.
|
JsonFactory |
disable(JsonFactory.Feature f)
Deprecated.
since 2.10 use
TSFBuilder.configure(JsonFactory.Feature, boolean) instead |
JsonFactory |
disable(JsonGenerator.Feature f)
Method for disabling specified generator feature
(check
JsonGenerator.Feature for list of features) |
JsonFactory |
disable(JsonParser.Feature f)
Method for disabling specified parser features
(check
JsonParser.Feature for list of features) |
JsonFactory |
enable(JsonFactory.Feature f)
Deprecated.
since 2.10 use
TSFBuilder.configure(JsonFactory.Feature, boolean) instead |
JsonFactory |
enable(JsonGenerator.Feature f)
Method for enabling specified generator features
(check
JsonGenerator.Feature for list of features) |
JsonFactory |
enable(JsonParser.Feature f)
Method for enabling specified parser feature
(check
JsonParser.Feature for list of features) |
CharacterEscapes |
getCharacterEscapes()
Method for accessing custom escapes factory uses for
JsonGenerator s
it creates. |
ObjectCodec |
getCodec() |
int |
getFormatGeneratorFeatures() |
String |
getFormatName()
Method that returns short textual id identifying format
this factory supports.
|
int |
getFormatParserFeatures() |
Class<? extends FormatFeature> |
getFormatReadFeatureType()
Method for accessing kind of
FormatFeature that a parser
JsonParser produced by this factory would accept, if any;
null returned if none. |
Class<? extends FormatFeature> |
getFormatWriteFeatureType()
Method for accessing kind of
FormatFeature that a parser
JsonGenerator produced by this factory would accept, if any;
null returned if none. |
int |
getGeneratorFeatures() |
InputDecorator |
getInputDecorator()
Method for getting currently configured input decorator (if any;
there is no default decorator).
|
OutputDecorator |
getOutputDecorator()
Method for getting currently configured output decorator (if any;
there is no default decorator).
|
int |
getParserFeatures() |
String |
getRootValueSeparator() |
MatchStrength |
hasFormat(InputAccessor acc) |
protected MatchStrength |
hasJSONFormat(InputAccessor acc) |
boolean |
isEnabled(JsonFactory.Feature f)
Checked whether specified parser feature is enabled.
|
boolean |
isEnabled(JsonGenerator.Feature f)
Check whether specified generator feature is enabled.
|
boolean |
isEnabled(JsonParser.Feature f)
Method for checking if the specified parser feature is enabled.
|
boolean |
isEnabled(StreamReadFeature f)
Method for checking if the specified stream read feature is enabled.
|
boolean |
isEnabled(StreamWriteFeature f)
Check whether specified stream write feature is enabled.
|
protected Object |
readResolve()
Method that we need to override to actually make restoration go
through constructors etc: needed to allow JDK serializability of
factory instances.
|
TSFBuilder<?,?> |
rebuild()
Method that allows construction of differently configured factory, starting
with settings of this factory.
|
boolean |
requiresCustomCodec()
Method that can be called to determine if a custom
ObjectCodec is needed for binding data parsed
using JsonParser constructed by this factory
(which typically also implies the same for serialization
with JsonGenerator ). |
boolean |
requiresPropertyOrdering()
Introspection method that higher-level functionality may call
to see whether underlying data format requires a stable ordering
of object properties or not.
|
JsonFactory |
setCharacterEscapes(CharacterEscapes esc)
Method for defining custom escapes factory uses for
JsonGenerator s
it creates. |
JsonFactory |
setCodec(ObjectCodec oc)
Method for associating a
ObjectCodec (typically
a com.fasterxml.jackson.databind.ObjectMapper )
with this factory (and more importantly, parsers and generators
it constructs). |
JsonFactory |
setInputDecorator(InputDecorator d)
Deprecated.
Since 2.10 use
TSFBuilder.inputDecorator(InputDecorator) instead |
JsonFactory |
setOutputDecorator(OutputDecorator d)
Deprecated.
Since 2.10 use
TSFBuilder.outputDecorator(OutputDecorator) instead |
JsonFactory |
setRootValueSeparator(String sep)
Method that allows overriding String used for separating root-level
JSON values (default is single space character)
|
JsonFactory |
setStreamReadConstraints(StreamReadConstraints src)
Method for overriding
StreamReadConstraints defined for
this factory. |
StreamReadConstraints |
streamReadConstraints()
Get the constraints to apply when performing streaming reads.
|
Version |
version()
Method called to detect version of the component that implements this interface;
returned version should never be null, but may return specific "not available"
instance (see
Version for details). |
_checkRangeBoundsForByteArray, _checkRangeBoundsForCharArray, _createDataOutputWrapper, _fileInputStream, _fileOutputStream, _optimizedStreamFromURL, _reportRangeError
public static final String FORMAT_NAME_JSON
getFormatName()
protected static final int DEFAULT_FACTORY_FEATURE_FLAGS
protected static final int DEFAULT_PARSER_FEATURE_FLAGS
protected static final int DEFAULT_GENERATOR_FEATURE_FLAGS
public static final SerializableString DEFAULT_ROOT_VALUE_SEPARATOR
public static final char DEFAULT_QUOTE_CHAR
protected final transient CharsToNameCanonicalizer _rootCharSymbols
protected final transient ByteQuadsCanonicalizer _byteSymbolCanonicalizer
TODO: should clean up this; looks messy having 2 alternatives with not very clear differences.
protected int _factoryFeatures
protected int _parserFeatures
protected int _generatorFeatures
protected ObjectCodec _objectCodec
protected CharacterEscapes _characterEscapes
protected StreamReadConstraints _streamReadConstraints
JsonParser
s constructed using
this factory.protected InputDecorator _inputDecorator
protected OutputDecorator _outputDecorator
protected SerializableString _rootValueSeparator
protected int _maximumNonEscapedChar
0
to indicate that no threshold is specified, or value
at or above 127 to indicate last character code that is NOT automatically escaped
(but depends on other configuration rules for checking).protected final char _quoteChar
JsonWriteFeature.QUOTE_FIELD_NAMES
)
and JSON String values.public JsonFactory()
public JsonFactory(ObjectCodec oc)
protected JsonFactory(JsonFactory src, ObjectCodec codec)
src
- Original factory to copy settings fromcodec
- Databinding-level codec to use, if anypublic JsonFactory(JsonFactoryBuilder b)
JsonFactoryBuilder
for instantiation.b
- Builder that contains settings to useprotected JsonFactory(TSFBuilder<?,?> b, boolean bogus)
b
- Builder that contains settings to usebogus
- Argument only needed to separate constructor signature; ignoredpublic TSFBuilder<?,?> rebuild()
public static TSFBuilder<?,?> builder()
JsonFactory
instances with
different configuration: creates and returns a builder for collecting configuration
settings; instance created by calling build()
after all configuration
set.
NOTE: signature unfortunately does not expose true implementation type; this will be fixed in 3.0.
public JsonFactory copy()
JsonFactory
that has
the same settings as this instance, but is otherwise
independent (i.e. nothing is actually shared, symbol tables
are separate).
Note that ObjectCodec
reference is not copied but is
set to null; caller typically needs to set it after calling
this method. Reason for this is that the codec is used for
callbacks, and assumption is that there is strict 1-to-1
mapping between codec, factory. Caller has to, then, explicitly
set codec after making the copy.protected void _checkInvalidCopy(Class<?> exp)
protected Object readResolve()
Note: must be overridden by sub-classes as well.
public boolean requiresPropertyOrdering()
Default implementation returns false
as JSON does NOT
require stable ordering. Formats that require ordering include positional
textual formats like CSV
, and schema-based binary formats
like Avro
.
requiresPropertyOrdering
in class TokenStreamFactory
public boolean canHandleBinaryNatively()
Default implementation returns false
as JSON does not
support native access: all binary content must use Base64 encoding.
Most binary formats (like Smile and Avro) support native binary content.
canHandleBinaryNatively
in class TokenStreamFactory
public boolean canUseCharArrays()
char[]
is something that actual
parser implementations can take advantage of, over having to
use Reader
. Sub-types are expected to override
definition; default implementation (suitable for JSON) alleges
that optimization are possible; and thereby is likely to try
to access String
content by first copying it into
recyclable intermediate buffer.getTextCharacters()
.public boolean canParseAsync()
NonBlockingInputFeeder
.canParseAsync
in class TokenStreamFactory
createNonBlockingXxx()
method(s) work)public Class<? extends FormatFeature> getFormatReadFeatureType()
TokenStreamFactory
FormatFeature
that a parser
JsonParser
produced by this factory would accept, if any;
null
returned if none.getFormatReadFeatureType
in class TokenStreamFactory
null
if nonepublic Class<? extends FormatFeature> getFormatWriteFeatureType()
TokenStreamFactory
FormatFeature
that a parser
JsonGenerator
produced by this factory would accept, if any;
null
returned if none.getFormatWriteFeatureType
in class TokenStreamFactory
null
if nonepublic boolean canUseSchema(FormatSchema schema)
canUseSchema
in class TokenStreamFactory
schema
- Schema instance to checkpublic String getFormatName()
Note: sub-classes should override this method; default implementation will return null for all sub-classes
getFormatName
in class TokenStreamFactory
public MatchStrength hasFormat(InputAccessor acc) throws IOException
IOException
public boolean requiresCustomCodec()
ObjectCodec
is needed for binding data parsed
using JsonParser
constructed by this factory
(which typically also implies the same for serialization
with JsonGenerator
).ObjectCodec
is enoughprotected MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
IOException
public Version version()
Versioned
Version
for details).@Deprecated public final JsonFactory configure(JsonFactory.Feature f, boolean state)
TSFBuilder.configure(JsonFactory.Feature, boolean)
insteadJsonParser.Feature
for list of features)f
- Feature to enable/disablestate
- Whether to enable or disable the feature@Deprecated public JsonFactory enable(JsonFactory.Feature f)
TSFBuilder.configure(JsonFactory.Feature, boolean)
insteadJsonFactory.Feature
for list of features)f
- Feature to enable@Deprecated public JsonFactory disable(JsonFactory.Feature f)
TSFBuilder.configure(JsonFactory.Feature, boolean)
insteadJsonFactory.Feature
for list of features)f
- Feature to disablepublic final boolean isEnabled(JsonFactory.Feature f)
f
- Feature to checkpublic final int getParserFeatures()
getParserFeatures
in class TokenStreamFactory
public final int getGeneratorFeatures()
getGeneratorFeatures
in class TokenStreamFactory
public int getFormatParserFeatures()
getFormatParserFeatures
in class TokenStreamFactory
public int getFormatGeneratorFeatures()
getFormatGeneratorFeatures
in class TokenStreamFactory
public StreamReadConstraints streamReadConstraints()
TokenStreamFactory
streamReadConstraints
in class TokenStreamFactory
JsonParser
s constructed
by this factory.public JsonFactory setStreamReadConstraints(StreamReadConstraints src)
StreamReadConstraints
defined for
this factory.
NOTE: the preferred way to set constraints is by using
TSFBuilder.streamReadConstraints(com.fasterxml.jackson.core.StreamReadConstraints)
: this method is only
provided to support older non-builder-based construction.
In Jackson 3.x this method will not be available.
src
- Constraintspublic final JsonFactory configure(JsonParser.Feature f, boolean state)
JsonParser.Feature
for list of features)f
- Feature to enable/disablestate
- Whether to enable or disable the featurepublic JsonFactory enable(JsonParser.Feature f)
JsonParser.Feature
for list of features)f
- Feature to enablepublic JsonFactory disable(JsonParser.Feature f)
JsonParser.Feature
for list of features)f
- Feature to disablepublic final boolean isEnabled(JsonParser.Feature f)
isEnabled
in class TokenStreamFactory
f
- Feature to checkpublic final boolean isEnabled(StreamReadFeature f)
f
- Feature to checkpublic InputDecorator getInputDecorator()
@Deprecated public JsonFactory setInputDecorator(InputDecorator d)
TSFBuilder.inputDecorator(InputDecorator)
insteadd
- Decorator to configure for this factory, if any (null
if none)public final JsonFactory configure(JsonGenerator.Feature f, boolean state)
JsonGenerator.Feature
for list of features)f
- Feature to enable/disablestate
- Whether to enable or disable the featurepublic JsonFactory enable(JsonGenerator.Feature f)
JsonGenerator.Feature
for list of features)f
- Feature to enablepublic JsonFactory disable(JsonGenerator.Feature f)
JsonGenerator.Feature
for list of features)f
- Feature to disablepublic final boolean isEnabled(JsonGenerator.Feature f)
isEnabled
in class TokenStreamFactory
f
- Feature to checkpublic final boolean isEnabled(StreamWriteFeature f)
f
- Feature to checkpublic CharacterEscapes getCharacterEscapes()
JsonGenerator
s
it creates.CharacterEscapes
, if any; null
if nonepublic JsonFactory setCharacterEscapes(CharacterEscapes esc)
JsonGenerator
s
it creates.esc
- CharaterEscapes to set (or null
for "none")public OutputDecorator getOutputDecorator()
null
if none.@Deprecated public JsonFactory setOutputDecorator(OutputDecorator d)
TSFBuilder.outputDecorator(OutputDecorator)
insteadd
- Output decorator to use, if anypublic JsonFactory setRootValueSeparator(String sep)
sep
- Separator to use, if any; null means that no separator is
automatically addedpublic String getRootValueSeparator()
public JsonFactory setCodec(ObjectCodec oc)
ObjectCodec
(typically
a com.fasterxml.jackson.databind.ObjectMapper
)
with this factory (and more importantly, parsers and generators
it constructs). This is needed to use data-binding methods
of JsonParser
and JsonGenerator
instances.oc
- Codec to usepublic ObjectCodec getCodec()
public JsonParser createParser(File f) throws IOException, JsonParseException
Encoding is auto-detected from contents according to JSON
specification recommended mechanism. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
Underlying input stream (needed for reading contents) will be owned (and managed, i.e. closed as need be) by the parser, since caller has no access to it.
createParser
in class TokenStreamFactory
f
- File that contains JSON content to parseIOException
JsonParseException
public JsonParser createParser(URL url) throws IOException, JsonParseException
Encoding is auto-detected from contents according to JSON
specification recommended mechanism. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
Underlying input stream (needed for reading contents) will be owned (and managed, i.e. closed as need be) by the parser, since caller has no access to it.
createParser
in class TokenStreamFactory
url
- URL pointing to resource that contains JSON content to parseIOException
JsonParseException
public JsonParser createParser(InputStream in) throws IOException, JsonParseException
The input stream will not be owned by
the parser, it will still be managed (i.e. closed if
end-of-stream is reacher, or parser close method called)
if (and only if) StreamReadFeature.AUTO_CLOSE_SOURCE
is enabled.
Note: no encoding argument is taken since it can always be
auto-detected as suggested by JSON RFC. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
createParser
in class TokenStreamFactory
in
- InputStream to use for reading JSON content to parseIOException
JsonParseException
public JsonParser createParser(Reader r) throws IOException, JsonParseException
The read stream will not be owned by
the parser, it will still be managed (i.e. closed if
end-of-stream is reacher, or parser close method called)
if (and only if) StreamReadFeature.AUTO_CLOSE_SOURCE
is enabled.
createParser
in class TokenStreamFactory
r
- Reader to use for reading JSON content to parseIOException
JsonParseException
public JsonParser createParser(byte[] data) throws IOException, JsonParseException
createParser
in class TokenStreamFactory
IOException
JsonParseException
public JsonParser createParser(byte[] data, int offset, int len) throws IOException, JsonParseException
createParser
in class TokenStreamFactory
data
- Buffer that contains data to parseoffset
- Offset of the first data byte within bufferlen
- Length of contents to parse within bufferIOException
JsonParseException
public JsonParser createParser(String content) throws IOException, JsonParseException
createParser
in class TokenStreamFactory
IOException
JsonParseException
public JsonParser createParser(char[] content) throws IOException
createParser
in class TokenStreamFactory
IOException
public JsonParser createParser(char[] content, int offset, int len) throws IOException
createParser
in class TokenStreamFactory
IOException
public JsonParser createParser(DataInput in) throws IOException
DataInput
instance.
If this factory does not support DataInput
as source,
will throw UnsupportedOperationException
createParser
in class TokenStreamFactory
IOException
public JsonParser createNonBlockingByteArrayParser() throws IOException
ByteArrayFeeder
interface (accessed using JsonParser.getNonBlockingInputFeeder()
from constructed instance).
If this factory does not support non-blocking parsing (either at all,
or from byte array),
will throw UnsupportedOperationException
.
Note that JSON-backed factory only supports parsing of UTF-8 encoded JSON content (and US-ASCII since it is proper subset); other encodings are not supported at this point.
createNonBlockingByteArrayParser
in class TokenStreamFactory
IOException
public JsonParser createNonBlockingByteBufferParser() throws IOException
ByteBufferFeeder
interface (accessed using JsonParser.getNonBlockingInputFeeder()
from constructed instance).
If this factory does not support non-blocking parsing (either at all,
or from byte array),
will throw UnsupportedOperationException
.
Note that JSON-backed factory only supports parsing of UTF-8 encoded JSON content (and US-ASCII since it is proper subset); other encodings are not supported at this point.
createNonBlockingByteBufferParser
in class TokenStreamFactory
IOException
public JsonGenerator createGenerator(OutputStream out, JsonEncoding enc) throws IOException
Underlying stream is NOT owned by the generator constructed,
so that generator will NOT close the output stream when
JsonGenerator.close()
is called (unless auto-closing
feature,
JsonGenerator.Feature.AUTO_CLOSE_TARGET
is enabled).
Using application needs to close it explicitly if this is the case.
Note: there are formats that use fixed encoding (like most binary data formats) and that ignore passed in encoding.
createGenerator
in class TokenStreamFactory
out
- OutputStream to use for writing JSON contentenc
- Character encoding to useIOException
public JsonGenerator createGenerator(OutputStream out) throws IOException
Note: there are formats that use fixed encoding (like most binary data formats).
createGenerator
in class TokenStreamFactory
IOException
public JsonGenerator createGenerator(Writer w) throws IOException
Underlying stream is NOT owned by the generator constructed,
so that generator will NOT close the Reader when
JsonGenerator.close()
is called (unless auto-closing
feature,
JsonGenerator.Feature.AUTO_CLOSE_TARGET
is enabled).
Using application needs to close it explicitly.
createGenerator
in class TokenStreamFactory
w
- Writer to use for writing JSON contentIOException
public JsonGenerator createGenerator(File f, JsonEncoding enc) throws IOException
Underlying stream is owned by the generator constructed,
i.e. generator will handle closing of file when
JsonGenerator.close()
is called.
createGenerator
in class TokenStreamFactory
f
- File to write contents toenc
- Character encoding to useIOException
public JsonGenerator createGenerator(DataOutput out, JsonEncoding enc) throws IOException
DataOutput
instance.createGenerator
in class TokenStreamFactory
IOException
public JsonGenerator createGenerator(DataOutput out) throws IOException
Note: there are formats that use fixed encoding (like most binary data formats).
createGenerator
in class TokenStreamFactory
IOException
@Deprecated public JsonParser createJsonParser(File f) throws IOException, JsonParseException
createParser(File)
instead.
Encoding is auto-detected from contents according to JSON
specification recommended mechanism. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
Underlying input stream (needed for reading contents) will be owned (and managed, i.e. closed as need be) by the parser, since caller has no access to it.
f
- File that contains JSON content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(URL url) throws IOException, JsonParseException
createParser(URL)
instead.
Encoding is auto-detected from contents according to JSON
specification recommended mechanism. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
Underlying input stream (needed for reading contents) will be owned (and managed, i.e. closed as need be) by the parser, since caller has no access to it.
url
- URL pointing to resource that contains JSON content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(InputStream in) throws IOException, JsonParseException
createParser(InputStream)
instead.
The input stream will not be owned by
the parser, it will still be managed (i.e. closed if
end-of-stream is reacher, or parser close method called)
if (and only if) JsonParser.Feature.AUTO_CLOSE_SOURCE
is enabled.
Note: no encoding argument is taken since it can always be
auto-detected as suggested by JSON RFC. Json specification
supports only UTF-8, UTF-16 and UTF-32 as valid encodings,
so auto-detection implemented only for this charsets.
For other charsets use createParser(java.io.Reader)
.
in
- InputStream to use for reading JSON content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(Reader r) throws IOException, JsonParseException
createParser(Reader)
instead.
The read stream will not be owned by
the parser, it will still be managed (i.e. closed if
end-of-stream is reacher, or parser close method called)
if (and only if) JsonParser.Feature.AUTO_CLOSE_SOURCE
is enabled.
r
- Reader to use for reading JSON content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(byte[] data) throws IOException, JsonParseException
createParser(byte[])
instead.data
- Input content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(byte[] data, int offset, int len) throws IOException, JsonParseException
createParser(byte[],int,int)
instead.data
- Buffer that contains data to parseoffset
- Offset of the first data byte within bufferlen
- Length of contents to parse within bufferIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonParser createJsonParser(String content) throws IOException, JsonParseException
createParser(String)
instead.content
- Input content to parseIOException
- if parser initialization fails due to I/O (read) problemJsonParseException
- if parser initialization fails due to content decoding problem@Deprecated public JsonGenerator createJsonGenerator(OutputStream out, JsonEncoding enc) throws IOException
createGenerator(OutputStream, JsonEncoding)
instead.
Underlying stream is NOT owned by the generator constructed,
so that generator will NOT close the output stream when
JsonGenerator.close()
is called (unless auto-closing
feature,
JsonGenerator.Feature.AUTO_CLOSE_TARGET
is enabled).
Using application needs to close it explicitly if this is the case.
Note: there are formats that use fixed encoding (like most binary data formats) and that ignore passed in encoding.
out
- OutputStream to use for writing JSON contentenc
- Character encoding to useIOException
- if parser initialization fails due to I/O (write) problem@Deprecated public JsonGenerator createJsonGenerator(Writer out) throws IOException
createGenerator(Writer)
instead.
Underlying stream is NOT owned by the generator constructed,
so that generator will NOT close the Reader when
JsonGenerator.close()
is called (unless auto-closing
feature,
JsonGenerator.Feature.AUTO_CLOSE_TARGET
is enabled).
Using application needs to close it explicitly.
out
- Writer to use for writing JSON contentIOException
- if parser initialization fails due to I/O (write) problem@Deprecated public JsonGenerator createJsonGenerator(OutputStream out) throws IOException
createGenerator(OutputStream)
instead.Note: there are formats that use fixed encoding (like most binary data formats).
out
- OutputStream to use for writing JSON contentIOException
- if parser initialization fails due to I/O (write) problemprotected JsonParser _createParser(InputStream in, IOContext ctxt) throws IOException
InputStream
and context object.
This method is specifically designed to remain compatible between minor versions so that sub-classes can count on it being called as expected. That is, it is part of official interface from sub-class perspective, although not a public method available to users of factory implementations.
in
- InputStream to use for reading content to parsectxt
- I/O context to use for parsingIOException
- if parser initialization fails due to I/O (read) problemprotected JsonParser _createParser(Reader r, IOContext ctxt) throws IOException
Reader
object for reading content.
This method is specifically designed to remain compatible between minor versions so that sub-classes can count on it being called as expected. That is, it is part of official interface from sub-class perspective, although not a public method available to users of factory implementations.
r
- Reader to use for reading content to parsectxt
- I/O context to use for parsingIOException
- if parser initialization fails due to I/O (read) problemprotected JsonParser _createParser(char[] data, int offset, int len, IOContext ctxt, boolean recyclable) throws IOException
char[]
object for accessing content.data
- Buffer that contains content to parseoffset
- Offset to the first character of data to parselen
- Number of characters within buffer to parsectxt
- I/O context to use for parsingrecyclable
- Whether input buffer is recycled by the factoryIOException
- if parser initialization fails due to I/O (read) problemprotected JsonParser _createParser(byte[] data, int offset, int len, IOContext ctxt) throws IOException
Reader
object for reading content
passed as raw byte array.
This method is specifically designed to remain compatible between minor versions so that sub-classes can count on it being called as expected. That is, it is part of official interface from sub-class perspective, although not a public method available to users of factory implementations.
data
- Buffer that contains content to parseoffset
- Offset to the first character of data to parselen
- Number of characters within buffer to parsectxt
- I/O context to use for parsingIOException
- if parser initialization fails due to I/O (read) problemprotected JsonParser _createParser(DataInput input, IOContext ctxt) throws IOException
input
- DataInput to use for reading content to parsectxt
- I/O context to use for parsingIOException
- if parser initialization fails due to I/O (read) problemprotected JsonGenerator _createGenerator(Writer out, IOContext ctxt) throws IOException
Writer
and context object.
This method is specifically designed to remain compatible between minor versions so that sub-classes can count on it being called as expected. That is, it is part of official interface from sub-class perspective, although not a public method available to users of factory implementations.
out
- Writer underlying writer to write generated content toctxt
- I/O context to useIOException
- if parser initialization fails due to I/O (write) problemprotected JsonGenerator _createUTF8Generator(OutputStream out, IOContext ctxt) throws IOException
OutputStream
and context object, using UTF-8 encoding.
This method is specifically designed to remain compatible between minor versions so that sub-classes can count on it being called as expected. That is, it is part of official interface from sub-class perspective, although not a public method available to users of factory implementations.
out
- OutputStream underlying writer to write generated content toctxt
- I/O context to useIOException
- if parser initialization fails due to I/O (write) problemprotected Writer _createWriter(OutputStream out, JsonEncoding enc, IOContext ctxt) throws IOException
IOException
protected final InputStream _decorate(InputStream in, IOContext ctxt) throws IOException
IOException
protected final Reader _decorate(Reader in, IOContext ctxt) throws IOException
IOException
protected final DataInput _decorate(DataInput in, IOContext ctxt) throws IOException
IOException
protected final OutputStream _decorate(OutputStream out, IOContext ctxt) throws IOException
IOException
protected final Writer _decorate(Writer out, IOContext ctxt) throws IOException
IOException
public BufferRecycler _getBufferRecycler()
Note: only public to give access for ObjectMapper
protected IOContext _createContext(ContentReference contentRef, boolean resourceManaged)
contentRef
- Source/target reference to use for diagnostics, exception messagesresourceManaged
- Whether input/output buffer is managed by this factory or not@Deprecated protected IOContext _createContext(Object rawContentRef, boolean resourceManaged)
_createContext(Object, boolean)
rawContentRef
- "Raw" source/target referenceresourceManaged
- Whether input/output buffer is managed by this factory or notprotected IOContext _createNonBlockingContext(Object srcRef)
srcRef
- Source reference to use for diagnostics, exception messagesprotected ContentReference _createContentReference(Object contentAccessor)
ContentReference
to pass to parser or generator being created; used in cases where no offset
or length is applicable (either irrelevant, or full contents assumed).contentAccessor
- Access to underlying content; depends on source/target,
as well as content representationprotected ContentReference _createContentReference(Object contentAccessor, int offset, int length)
ContentReference
to pass to parser or generator being created; used in cases where content
is available in a static buffer with relevant offset and length (mostly
when reading from byte[]
, char[]
or String
).contentAccessor
- Access to underlying content; depends on source/target,
as well as content representationoffset
- Offset of contentlength
- Length of contentCopyright © 2008–2024 FasterXML. All rights reserved.