Class JsonWriter
- java.lang.Object
-
- org.apache.logging.log4j.layout.template.json.util.JsonWriter
-
- All Implemented Interfaces:
java.lang.AutoCloseable,java.lang.Cloneable
public final class JsonWriter extends java.lang.Object implements java.lang.AutoCloseable, java.lang.CloneableA simple JSON writer with support for common Java data types.The following types have specific handlers:
- null input
Map,IndexedReadOnlyStringMap,StringMapCollectionandListNumber(BigDecimal,BigInteger,Float,Double,Byte,Short,Integer, andLong)BooleanStringBuilderFormattable- arrays of primitive types
char/boolean/byte/short/int/long/float/double and
Object CharSequenceand 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 Modifier and Type Class Description static classJsonWriter.Builder
-
Field Summary
Fields Modifier and Type Field Description private static 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.private java.lang.StringBuilderformattableBufferprivate static char[]HEX_CHARSprivate intmaxStringLengthprivate char[]quoteBufferprivate java.lang.StringquotedTruncatedStringSuffixprivate java.lang.StringBuilderstringBuilderprivate java.lang.StringtruncatedStringSuffix
-
Constructor Summary
Constructors Modifier Constructor Description privateJsonWriter(JsonWriter.Builder builder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JsonWriterclone()voidclose()intgetMaxStringLength()java.lang.StringBuildergetStringBuilder()java.lang.StringgetTruncatedStringSuffix()static JsonWriter.BuildernewBuilder()private intquoteNamed(int esc)private intquoteNumeric(int value)private voidquoteString(char[] buffer, int offset, int length)Quote text contents using JSON standard quoting.private voidquoteString(java.lang.CharSequence seq, int offset, int length)Quote text contents using JSON standard quoting.private java.lang.StringquoteString(java.lang.String string)private voidtrimStringBuilder(java.lang.StringBuilder stringBuilder, int length)java.lang.Stringuse(java.lang.Runnable runnable)voidwriteArray(boolean[] items)voidwriteArray(byte[] items)voidwriteArray(char[] items)voidwriteArray(double[] items)voidwriteArray(float[] items)voidwriteArray(int[] items)voidwriteArray(long[] items)voidwriteArray(short[] items)voidwriteArray(java.lang.Object[] items)voidwriteArray(java.util.Collection<java.lang.Object> items)voidwriteArray(java.util.List<java.lang.Object> items)voidwriteArrayEnd()voidwriteArrayStart()voidwriteBoolean(boolean value)voidwriteNull()voidwriteNumber(double number)voidwriteNumber(float number)voidwriteNumber(int number)voidwriteNumber(long number)voidwriteNumber(long integralPart, long fractionalPart)voidwriteNumber(short number)private voidwriteNumber(java.lang.Number number)voidwriteNumber(java.math.BigDecimal number)voidwriteNumber(java.math.BigInteger number)voidwriteObject(java.util.Map<java.lang.String,java.lang.Object> map)voidwriteObject(IndexedReadOnlyStringMap map)voidwriteObject(StringMap map)voidwriteObjectEnd()voidwriteObjectKey(java.lang.CharSequence key)voidwriteObjectStart()voidwriteRawString(char[] buffer)voidwriteRawString(char[] buffer, int offset, int length)voidwriteRawString(java.lang.CharSequence seq)voidwriteRawString(java.lang.CharSequence seq, int offset, int length)voidwriteSeparator()voidwriteString(char[] buffer)voidwriteString(char[] buffer, int offset, int length)voidwriteString(java.lang.CharSequence seq)voidwriteString(java.lang.CharSequence seq, int offset, int length)<S> voidwriteString(java.util.function.BiConsumer<java.lang.StringBuilder,S> emitter, S state)voidwriteString(StringBuilderFormattable formattable)private voidwriteStringMap(java.lang.String key, java.lang.Object value, boolean[] firstEntry)voidwriteValue(java.lang.Object value)
-
-
-
Field Detail
-
HEX_CHARS
private static final char[] HEX_CHARS
-
ESC_CODES
private static final int[] ESC_CODES
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.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
private final java.lang.StringBuilder stringBuilder
-
formattableBuffer
private final java.lang.StringBuilder formattableBuffer
-
maxStringLength
private final int maxStringLength
-
truncatedStringSuffix
private final java.lang.String truncatedStringSuffix
-
quotedTruncatedStringSuffix
private final java.lang.String quotedTruncatedStringSuffix
-
-
Constructor Detail
-
JsonWriter
private JsonWriter(JsonWriter.Builder builder)
-
-
Method Detail
-
quoteString
private java.lang.String quoteString(java.lang.String string)
-
use
public java.lang.String use(java.lang.Runnable runnable)
-
getStringBuilder
public java.lang.StringBuilder getStringBuilder()
-
getMaxStringLength
public int getMaxStringLength()
-
getTruncatedStringSuffix
public java.lang.String getTruncatedStringSuffix()
-
writeValue
public void writeValue(java.lang.Object value)
-
writeObject
public void writeObject(StringMap map)
-
writeStringMap
private void writeStringMap(java.lang.String key, java.lang.Object value, boolean[] firstEntry)
-
writeObject
public void writeObject(IndexedReadOnlyStringMap map)
-
writeObject
public void writeObject(java.util.Map<java.lang.String,java.lang.Object> map)
-
writeObjectStart
public void writeObjectStart()
-
writeObjectEnd
public void writeObjectEnd()
-
writeObjectKey
public void writeObjectKey(java.lang.CharSequence key)
-
writeArray
public void writeArray(java.util.List<java.lang.Object> items)
-
writeArray
public void writeArray(java.util.Collection<java.lang.Object> items)
-
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
public void writeArray(java.lang.Object[] items)
-
writeArrayStart
public void writeArrayStart()
-
writeArrayEnd
public void writeArrayEnd()
-
writeSeparator
public void writeSeparator()
-
writeString
public <S> void writeString(java.util.function.BiConsumer<java.lang.StringBuilder,S> emitter, S state)
-
writeString
public void writeString(StringBuilderFormattable formattable)
-
writeString
public void writeString(java.lang.CharSequence seq)
-
writeString
public void writeString(java.lang.CharSequence seq, int offset, int length)
-
quoteString
private void quoteString(java.lang.CharSequence seq, int offset, int length)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
private void writeNumber(java.lang.Number number)
-
writeNumber
public void writeNumber(java.math.BigDecimal number)
-
writeNumber
public void writeNumber(java.math.BigInteger number)
-
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
public void writeRawString(java.lang.CharSequence seq)
-
writeRawString
public void writeRawString(java.lang.CharSequence seq, int offset, int length)
-
writeRawString
public void writeRawString(char[] buffer)
-
writeRawString
public void writeRawString(char[] buffer, int offset, int length)
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable
-
trimStringBuilder
private void trimStringBuilder(java.lang.StringBuilder stringBuilder, int length)
-
clone
public JsonWriter clone()
- Overrides:
clonein classjava.lang.Object
-
newBuilder
public static JsonWriter.Builder newBuilder()
-
-