Class JsonWriter

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.lang.Cloneable

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

    The following types have specific handlers:

    • null input
    • Map, IndexedReadOnlyStringMap, StringMap
    • Collection and List
    • Number (BigDecimal, BigInteger, Float, Double, Byte, Short, Integer, and Long)
    • 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.

    • 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
    • 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)
      • 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​(BiConsumer<java.lang.StringBuilder,​S> emitter,
                                    S state)
      • 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:
        close in interface java.lang.AutoCloseable
      • trimStringBuilder

        private void trimStringBuilder​(java.lang.StringBuilder stringBuilder,
                                       int length)
      • clone

        public JsonWriter clone()
        Overrides:
        clone in class java.lang.Object