Class JsonWriter
java.lang.Object
org.apache.logging.log4j.layout.template.json.util.JsonWriter
- All Implemented Interfaces:
AutoCloseable
,Cloneable
A simple JSON writer with support for common Java data types.
The following types have specific handlers:
- null input
Map
,IndexedReadOnlyStringMap
,StringMap
Collection
andList
Number
(BigDecimal
,BigInteger
,Float
,Double
,Byte
,Short
,Integer
, andLong
)Boolean
StringBuilderFormattable
- arrays of primitive types
char/boolean/byte/short/int/long/float/double and
Object
CharSequence
and char[] with necessary escaping
JSON standard quoting routines are borrowed from Jackson.
Note that this class provides no protection against recursive collections, e.g., an array where one or more elements reference to the array itself.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int[]
Lookup table used for determining which output characters in 7-bit ASCII range (i.e., first 128 Unicode code points, single-byte UTF-8 characters) need to be quoted.private final StringBuilder
private static final char[]
private final int
private final char[]
private final String
private final StringBuilder
private final String
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()
void
close()
int
static JsonWriter.Builder
private int
quoteNamed
(int esc) private int
quoteNumeric
(int value) private void
quoteString
(char[] buffer, int offset, int length) Quote text contents using JSON standard quoting.private void
quoteString
(CharSequence seq, int offset, int length) Quote text contents using JSON standard quoting.private String
quoteString
(String string) private void
trimStringBuilder
(StringBuilder stringBuilder, int length) void
writeArray
(boolean[] items) void
writeArray
(byte[] items) void
writeArray
(char[] items) void
writeArray
(double[] items) void
writeArray
(float[] items) void
writeArray
(int[] items) void
writeArray
(long[] items) void
writeArray
(short[] items) void
writeArray
(Object[] items) void
writeArray
(Collection<Object> items) void
writeArray
(List<Object> items) void
void
void
writeBoolean
(boolean value) void
void
writeNumber
(double number) void
writeNumber
(float number) void
writeNumber
(int number) void
writeNumber
(long number) void
writeNumber
(long integralPart, long fractionalPart) void
writeNumber
(short number) private void
writeNumber
(Number number) void
writeNumber
(BigDecimal number) void
writeNumber
(BigInteger number) void
writeObject
(Map<String, Object> map) void
void
writeObject
(StringMap map) void
void
void
void
writeRawString
(char[] buffer) void
writeRawString
(char[] buffer, int offset, int length) void
void
writeRawString
(CharSequence seq, int offset, int length) void
void
writeString
(char[] buffer) void
writeString
(char[] buffer, int offset, int length) void
writeString
(CharSequence seq) void
writeString
(CharSequence seq, int offset, int length) <S> void
writeString
(BiConsumer<StringBuilder, S> emitter, S state) void
writeString
(StringBuilderFormattable formattable) void
writeValue
(Object value)
-
Field Details
-
HEX_CHARS
private static final char[] HEX_CHARS -
ESC_CODES
private static final int[] ESC_CODESLookup table used for determining which output characters in 7-bit ASCII range (i.e., first 128 Unicode code points, single-byte UTF-8 characters) need to be quoted.Value of 0 means "no escaping"; other positive values, that value is character to use after backslash; and negative values, that generic (backslash - u) escaping is to be used.
-
quoteBuffer
private final char[] quoteBuffer -
stringBuilder
-
formattableBuffer
-
maxStringLength
private final int maxStringLength -
truncatedStringSuffix
-
quotedTruncatedStringSuffix
-
-
Constructor Details
-
JsonWriter
-
-
Method Details
-
quoteString
-
use
-
getStringBuilder
-
getMaxStringLength
public int getMaxStringLength() -
getTruncatedStringSuffix
-
writeValue
-
writeObject
-
writeObject
-
writeObject
-
writeObjectStart
public void writeObjectStart() -
writeObjectEnd
public void writeObjectEnd() -
writeObjectKey
-
writeArray
-
writeArray
-
writeArray
public void writeArray(char[] items) -
writeArray
public void writeArray(boolean[] items) -
writeArray
public void writeArray(byte[] items) -
writeArray
public void writeArray(short[] items) -
writeArray
public void writeArray(int[] items) -
writeArray
public void writeArray(long[] items) -
writeArray
public void writeArray(float[] items) -
writeArray
public void writeArray(double[] items) -
writeArray
-
writeArrayStart
public void writeArrayStart() -
writeArrayEnd
public void writeArrayEnd() -
writeSeparator
public void writeSeparator() -
writeString
-
writeString
-
writeString
-
writeString
-
quoteString
Quote text contents using JSON standard quoting. -
writeString
public void writeString(char[] buffer) -
writeString
public void writeString(char[] buffer, int offset, int length) -
quoteString
private void quoteString(char[] buffer, int offset, int length) Quote text contents using JSON standard quoting. -
quoteNumeric
private int quoteNumeric(int value) -
quoteNamed
private int quoteNamed(int esc) -
writeNumber
-
writeNumber
-
writeNumber
-
writeNumber
public void writeNumber(float number) -
writeNumber
public void writeNumber(double number) -
writeNumber
public void writeNumber(short number) -
writeNumber
public void writeNumber(int number) -
writeNumber
public void writeNumber(long number) -
writeNumber
public void writeNumber(long integralPart, long fractionalPart) -
writeBoolean
public void writeBoolean(boolean value) -
writeNull
public void writeNull() -
writeRawString
-
writeRawString
-
writeRawString
public void writeRawString(char[] buffer) -
writeRawString
public void writeRawString(char[] buffer, int offset, int length) -
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
trimStringBuilder
-
clone
-
newBuilder
-