java.lang.Object
org.apache.logging.log4j.layout.template.json.util.JsonWriter
All Implemented Interfaces:
AutoCloseable, Cloneable

public final class JsonWriter extends Object implements AutoCloseable, Cloneable
A simple JSON writer with support for common Java data types.

The following types have specific handlers:

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.

  • Field Details

    • 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 StringBuilder stringBuilder
    • formattableBuffer

      private final StringBuilder formattableBuffer
    • maxStringLength

      private final int maxStringLength
    • truncatedStringSuffix

      private final String truncatedStringSuffix
    • quotedTruncatedStringSuffix

      private final String quotedTruncatedStringSuffix
  • Constructor Details

  • Method Details

    • quoteString

      private String quoteString(String string)
    • use

      public String use(Runnable runnable)
    • getStringBuilder

      public StringBuilder getStringBuilder()
    • getMaxStringLength

      public int getMaxStringLength()
    • getTruncatedStringSuffix

      public String getTruncatedStringSuffix()
    • writeValue

      public void writeValue(Object value)
    • writeObject

      public void writeObject(StringMap map)
    • writeObject

      public void writeObject(IndexedReadOnlyStringMap map)
    • writeObject

      public void writeObject(Map<String,Object> map)
    • writeObjectStart

      public void writeObjectStart()
    • writeObjectEnd

      public void writeObjectEnd()
    • writeObjectKey

      public void writeObjectKey(CharSequence key)
    • writeArray

      public void writeArray(List<Object> items)
    • writeArray

      public void writeArray(Collection<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(Object[] items)
    • writeArrayStart

      public void writeArrayStart()
    • writeArrayEnd

      public void writeArrayEnd()
    • writeSeparator

      public void writeSeparator()
    • writeString

      public <S> void writeString(BiConsumer<StringBuilder,S> emitter, S state)
    • writeString

      public void writeString(StringBuilderFormattable formattable)
    • writeString

      public void writeString(CharSequence seq)
    • writeString

      public void writeString(CharSequence seq, int offset, int length)
    • quoteString

      private void quoteString(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(Number number)
    • writeNumber

      public void writeNumber(BigDecimal number)
    • writeNumber

      public void writeNumber(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(CharSequence seq)
    • writeRawString

      public void writeRawString(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:
      close in interface AutoCloseable
    • trimStringBuilder

      private void trimStringBuilder(StringBuilder stringBuilder, int length)
    • clone

      public JsonWriter clone()
      Overrides:
      clone in class Object
    • newBuilder

      public static JsonWriter.Builder newBuilder()