public final class WriterBasedJsonGenerator extends GeneratorBase
JsonGenerator that outputs JSON content using a Writer
which handles character encoding.JsonGenerator.Feature| 构造器和说明 |
|---|
WriterBasedJsonGenerator(IOContext ctxt,
int features,
ObjectCodec codec,
Writer w) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
_writeFieldName(SerializableString name,
boolean commaBefore) |
void |
close()
Method called to close this generator, so that no more content
can be written.
|
void |
flush()
Method called to flush any buffered content to the underlying
target (output stream, writer), and to flush the target itself
as well.
|
CharacterEscapes |
getCharacterEscapes()
Method for accessing custom escapes factory uses for
JsonGenerators
it creates. |
int |
getHighestEscapedChar()
Accessor method for testing what is the highest unescaped character
configured for this generator.
|
Object |
getOutputTarget()
Method that can be used to get access to object that is used
as target for generated output; this is usually either
OutputStream or Writer, depending on what
generator was constructed with. |
JsonGenerator |
setCharacterEscapes(CharacterEscapes esc)
Method for defining custom escapes factory uses for
JsonGenerators
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).
|
Version |
version()
Implemented with detection that tries to find "VERSION.txt" in same
package as the implementation class.
|
void |
writeBinary(Base64Variant b64variant,
byte[] data,
int offset,
int len)
Method that will output given chunk of binary data as base64
encoded, as a complete String value (surrounded by double quotes).
|
void |
writeBoolean(boolean state)
Method for outputting literal Json boolean value (one of
Strings 'true' and 'false').
|
void |
writeEndArray()
Method for writing closing marker of a JSON Array value
(character ']'; plus possible white space decoration
if pretty-printing is enabled).
|
void |
writeEndObject()
Method for writing closing marker of a JSON Object value
(character '}'; plus possible white space decoration
if pretty-printing is enabled).
|
void |
writeFieldName(SerializableString name)
Method similar to
JsonGenerator.writeFieldName(String), main difference
being that it may perform better as some of processing (such as
quoting of certain characters, or encoding into external encoding
if supported by generator) can be done just once and reused for
later calls. |
void |
writeFieldName(String name)
Method for writing a field name (JSON String surrounded by
double quotes: syntactically identical to a JSON String value),
possibly decorated by white space if pretty-printing is enabled.
|
void |
writeNull()
Method for outputting literal Json null value.
|
void |
writeNumber(BigDecimal value)
Method for outputting indicate Json numeric value.
|
void |
writeNumber(BigInteger value)
Method for outputting given value as Json number.
|
void |
writeNumber(double d)
Method for outputting indicate Json numeric value.
|
void |
writeNumber(float f)
Method for outputting indicate Json numeric value.
|
void |
writeNumber(int i)
Method for outputting given value as Json number.
|
void |
writeNumber(long l)
Method for outputting given value as Json number.
|
void |
writeNumber(String encodedValue)
Write method that can be used for custom numeric types that can
not be (easily?)
|
void |
writeRaw(char c)
Method that will force generator to copy
input text verbatim with no modifications (including
that no escaping is done and no separators are added even
if context [array, object] would otherwise require such).
|
void |
writeRaw(char[] text,
int offset,
int len)
Method that will force generator to copy
input text verbatim with no modifications (including
that no escaping is done and no separators are added even
if context [array, object] would otherwise require such).
|
void |
writeRaw(String text)
Method that will force generator to copy
input text verbatim with no modifications (including
that no escaping is done and no separators are added even
if context [array, object] would otherwise require such).
|
void |
writeRaw(String text,
int start,
int len)
Method that will force generator to copy
input text verbatim with no modifications (including
that no escaping is done and no separators are added even
if context [array, object] would otherwise require such).
|
void |
writeRawUTF8String(byte[] text,
int offset,
int length)
Method similar to
JsonGenerator.writeString(String) but that takes as
its input a UTF-8 encoded String that is to be output as-is, without additional
escaping (type of which depends on data format; backslashes for JSON). |
void |
writeStartArray()
Method for writing starting marker of a JSON Array value
(character '['; plus possible white space decoration
if pretty-printing is enabled).
|
void |
writeStartObject()
Method for writing starting marker of a JSON Object value
(character '{'; plus possible white space decoration
if pretty-printing is enabled).
|
void |
writeString(char[] text,
int offset,
int len)
Method for outputting a String value.
|
void |
writeString(SerializableString sstr)
Method similar to
JsonGenerator.writeString(String), but that takes
SerializableString which can make this potentially
more efficient to call as generator may be able to reuse
quoted and/or encoded representation. |
void |
writeString(String text)
Method for outputting a String value.
|
void |
writeStringField(String fieldName,
String value)
Convenience method for outputting a field entry ("member")
that has a String value.
|
void |
writeUTF8String(byte[] text,
int offset,
int length)
Method similar to
JsonGenerator.writeString(String) but that takes as its input
a UTF-8 encoded String which has not been escaped using whatever
escaping scheme data format requires (for JSON that is backslash-escaping
for control characters and double-quotes; for other formats something else). |
copyCurrentEvent, copyCurrentStructure, disable, enable, getCodec, getOutputContext, isClosed, isEnabled, setCodec, useDefaultPrettyPrinter, writeObject, writeRawValue, writeRawValue, writeRawValue, writeTreecanUseSchema, configure, getSchema, setPrettyPrinter, setSchema, writeArrayFieldStart, writeBinary, writeBinary, writeBinaryField, writeBooleanField, writeNullField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeObjectField, writeObjectFieldStartpublic WriterBasedJsonGenerator(IOContext ctxt, int features, ObjectCodec codec, Writer w)
public Version version()
GeneratorBaseversion 在接口中 Versionedversion 在类中 GeneratorBasepublic JsonGenerator setHighestNonEscapedChar(int charCode)
JsonGeneratorNote 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.
setHighestNonEscapedChar 在类中 JsonGeneratorcharCode - 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.public int getHighestEscapedChar()
JsonGeneratorgetHighestEscapedChar 在类中 JsonGeneratorpublic JsonGenerator setCharacterEscapes(CharacterEscapes esc)
JsonGeneratorJsonGenerators
it creates.setCharacterEscapes 在类中 JsonGeneratorpublic CharacterEscapes getCharacterEscapes()
JsonGenerators
it creates.getCharacterEscapes 在类中 JsonGeneratorpublic Object getOutputTarget()
JsonGeneratorOutputStream or Writer, depending on what
generator was constructed with.
Note that returned value may be null in some cases; including
case where implementation does not want to exposed raw
source to caller.
In cases where output has been decorated, object returned here
is the decorated version; this allows some level of interaction
between users of generator and decorator object.
In general use of this accessor should be considered as "last effort", i.e. only used if no other mechanism is applicable.
getOutputTarget 在类中 JsonGeneratorpublic final void writeFieldName(String name) throws IOException, JsonGenerationException
JsonGeneratorField names can only be written in Object context (check out JSON specification for details), when field name is expected (field names alternate with values).
writeFieldName 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void writeStringField(String fieldName, String value) throws IOException, JsonGenerationException
JsonGeneratorwriteFieldName(fieldName); writeString(value);
Note: many performance-sensitive implementations override this method
public final void writeFieldName(SerializableString name) throws IOException, JsonGenerationException
JsonGeneratorJsonGenerator.writeFieldName(String), main difference
being that it may perform better as some of processing (such as
quoting of certain characters, or encoding into external encoding
if supported by generator) can be done just once and reused for
later calls.
Default implementation simple uses unprocessed name container in serialized String; implementations are strongly encouraged to make use of more efficient methods argument object has.
public final void writeStartArray()
throws IOException,
JsonGenerationException
JsonGeneratorArray values can be written in any context where values are allowed: meaning everywhere except for when a field name is expected.
writeStartArray 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void writeEndArray()
throws IOException,
JsonGenerationException
JsonGeneratorMarker can be written if the innermost structured type is Array.
writeEndArray 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void writeStartObject()
throws IOException,
JsonGenerationException
JsonGeneratorObject values can be written in any context where values are allowed: meaning everywhere except for when a field name is expected.
writeStartObject 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void writeEndObject()
throws IOException,
JsonGenerationException
JsonGeneratorMarker can be written if the innermost structured type is Object, and the last written event was either a complete value, or START-OBJECT marker (see JSON specification for more details).
writeEndObject 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void _writeFieldName(SerializableString name, boolean commaBefore) throws IOException, JsonGenerationException
public void writeString(String text) throws IOException, JsonGenerationException
JsonGeneratorwriteString 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeString(char[] text,
int offset,
int len)
throws IOException,
JsonGenerationException
JsonGeneratorwriteString 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void writeString(SerializableString sstr) throws IOException, JsonGenerationException
JsonGeneratorJsonGenerator.writeString(String), but that takes
SerializableString which can make this potentially
more efficient to call as generator may be able to reuse
quoted and/or encoded representation.
Default implementation just calls JsonGenerator.writeString(String);
sub-classes should override it with more efficient implementation
if possible.
writeString 在类中 GeneratorBaseIOExceptionJsonGenerationExceptionpublic void writeRawUTF8String(byte[] text,
int offset,
int length)
throws IOException,
JsonGenerationException
JsonGeneratorJsonGenerator.writeString(String) but that takes as
its input a UTF-8 encoded String that is to be output as-is, without additional
escaping (type of which depends on data format; backslashes for JSON).
However, quoting that data format requires (like double-quotes for JSON) will be added
around the value if and as necessary.
Note that some backends may choose not to support this method: for
example, if underlying destination is a Writer
using this method would require UTF-8 decoding.
If so, implementation may instead choose to throw a
UnsupportedOperationException due to ineffectiveness
of having to decode input.
public void writeUTF8String(byte[] text,
int offset,
int length)
throws IOException,
JsonGenerationException
JsonGeneratorJsonGenerator.writeString(String) but that takes as its input
a UTF-8 encoded String which has not been escaped using whatever
escaping scheme data format requires (for JSON that is backslash-escaping
for control characters and double-quotes; for other formats something else).
This means that textual JSON backends need to check if value needs
JSON escaping, but otherwise can just be copied as is to output.
Also, quoting that data format requires (like double-quotes for JSON) will be added
around the value if and as necessary.
Note that some backends may choose not to support this method: for
example, if underlying destination is a Writer
using this method would require UTF-8 decoding.
In this case
generator implementation may instead choose to throw a
UnsupportedOperationException due to ineffectiveness
of having to decode input.
writeUTF8String 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeRaw(String text) throws IOException, JsonGenerationException
JsonGeneratorJsonGenerator.writeRawValue(String) instead.
Note that not all generator implementations necessarily support
such by-pass methods: those that do not will throw
UnsupportedOperationException.
writeRaw 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeRaw(String text, int start, int len) throws IOException, JsonGenerationException
JsonGeneratorJsonGenerator.writeRawValue(String) instead.
Note that not all generator implementations necessarily support
such by-pass methods: those that do not will throw
UnsupportedOperationException.
writeRaw 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeRaw(char[] text,
int offset,
int len)
throws IOException,
JsonGenerationException
JsonGeneratorJsonGenerator.writeRawValue(String) instead.
Note that not all generator implementations necessarily support
such by-pass methods: those that do not will throw
UnsupportedOperationException.
writeRaw 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeRaw(char c)
throws IOException,
JsonGenerationException
JsonGeneratorJsonGenerator.writeRawValue(String) instead.
Note that not all generator implementations necessarily support
such by-pass methods: those that do not will throw
UnsupportedOperationException.
writeRaw 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeBinary(Base64Variant b64variant, byte[] data, int offset, int len) throws IOException, JsonGenerationException
JsonGenerator
Note: because Json Strings can not contain unescaped linefeeds,
if linefeeds are included (as per last argument), they must be
escaped. This adds overhead for decoding without improving
readability.
Alternatively if linefeeds are not included,
resulting String value may violate the requirement of base64
RFC which mandates line-length of 76 characters and use of
linefeeds. However, all JacksonParser implementations
are required to accept such "long line base64"; as do
typical production-level base64 decoders.
writeBinary 在类中 JsonGeneratorb64variant - Base64 variant to use: defines details such as
whether padding is used (and if so, using which character);
what is the maximum line length before adding linefeed,
and also the underlying alphabet to use.IOExceptionJsonGenerationExceptionpublic void writeNumber(int i)
throws IOException,
JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(long l)
throws IOException,
JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(BigInteger value) throws IOException, JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(double d)
throws IOException,
JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(float f)
throws IOException,
JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(BigDecimal value) throws IOException, JsonGenerationException
JsonGeneratorwriteNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNumber(String encodedValue) throws IOException, JsonGenerationException
JsonGeneratorJsonGenerator.writeString(java.lang.String) method can not be used; nor
JsonGenerator.writeRaw(java.lang.String) because that does not properly handle
value separators needed in Array or Object contexts.
Note: because of lack of type safety, some generator
implementations may not be able to implement this
method. For example, if a binary json format is used,
it may require type information for encoding; similarly
for generator-wrappers around Java objects or Json nodes.
If implementation does not implement this method,
it needs to throw UnsupportedOperationException.
writeNumber 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeBoolean(boolean state)
throws IOException,
JsonGenerationException
JsonGeneratorwriteBoolean 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic void writeNull()
throws IOException,
JsonGenerationException
JsonGeneratorwriteNull 在类中 JsonGeneratorIOExceptionJsonGenerationExceptionpublic final void flush()
throws IOException
JsonGeneratorflush 在类中 GeneratorBaseIOExceptionpublic void close()
throws IOException
JsonGenerator
Whether the underlying target (stream, writer) gets closed depends
on whether this generator either manages the target (i.e. is the
only one with access to the target -- case if caller passes a
reference to the resource such as File, but not stream); or
has feature JsonGenerator.Feature.AUTO_CLOSE_TARGET enabled.
If either of above is true, the target is also closed. Otherwise
(not managing, feature not enabled), target is not closed.
close 在接口中 Closeableclose 在接口中 AutoCloseableclose 在类中 GeneratorBaseIOExceptionCopyright © 2002–2019 The MyMMSCs Software Foundation. All rights reserved.