Class DefaultPrettyPrinter

java.lang.Object
tools.jackson.core.util.DefaultPrettyPrinter
All Implemented Interfaces:
Serializable, PrettyPrinter, Instantiatable<DefaultPrettyPrinter>

public class DefaultPrettyPrinter extends Object implements PrettyPrinter, Instantiatable<DefaultPrettyPrinter>, Serializable
Default PrettyPrinter implementation that uses 2-space indentation with platform-default linefeeds. Usually this class is not instantiated directly, but instead instantiated by JsonFactory or databind level mapper.

If you override this class, take note of Instantiatable, as subclasses will still create an instance of DefaultPrettyPrinter.

This class is designed for the JSON data format. It works on other formats with same logical model (such as binary CBOR and Smile formats), but may not work as-is for other data formats, most notably XML. It may be necessary to use format-specific PrettyPrinter implementation specific to that format.

See Also:
  • Field Details

    • _arrayIndenter

      protected DefaultPrettyPrinter.Indenter _arrayIndenter
      By default, let's use only spaces to separate array values.
    • _objectIndenter

      protected DefaultPrettyPrinter.Indenter _objectIndenter
      By default, let's use linefeed-adding indenter for separate object entries. We'll further configure indenter to use system-specific linefeeds, and 2 spaces per level (as opposed to, say, single tabs)
    • _rootValueSeparator

      protected final SerializableString _rootValueSeparator
      String printed between root-level values, if any.
    • _nesting

      protected transient int _nesting
      Number of open levels of nesting. Used to determine amount of indentation to use.
    • _separators

      protected final Separators _separators
    • _objectNameValueSeparator

      protected final String _objectNameValueSeparator
      Separator between Object property names and values, including possible before/after spaces.
    • _objectEntrySeparator

      protected final String _objectEntrySeparator
      Separator between Object property entries, including possible before/after spaces.
    • _objectEmptySeparator

      protected final String _objectEmptySeparator
      String to use in empty Object to separate start and end markers. Default is single space, resulting in output of { }.
    • _arrayElementSeparator

      protected final String _arrayElementSeparator
      Separator between Array elements, including possible before/after spaces.
    • _arrayEmptySeparator

      protected final String _arrayEmptySeparator
      String to use in empty Array to separate start and end markers. Default is single space, resulting in output of [ ].
  • Constructor Details

    • DefaultPrettyPrinter

      public DefaultPrettyPrinter()
      Default constructor for "vanilla" instance with default settings.
    • DefaultPrettyPrinter

      public DefaultPrettyPrinter(Separators separators)
      Default constructor for "vanilla" instance with default settings, except for Separators overrides.
      Parameters:
      separators - Custom separator definition over defaults.
    • DefaultPrettyPrinter

      public DefaultPrettyPrinter(DefaultPrettyPrinter base)
      Copy constructor.
      Parameters:
      base - DefaultPrettyPrinter being copied
    • DefaultPrettyPrinter

      public DefaultPrettyPrinter(DefaultPrettyPrinter base, Separators separators)
      Copy constructor with override
      Parameters:
      base - DefaultPrettyPrinter being copied
      separators - Separators to use instead of ones base had
  • Method Details

    • indentArraysWith

      public void indentArraysWith(DefaultPrettyPrinter.Indenter i)
    • indentObjectsWith

      public void indentObjectsWith(DefaultPrettyPrinter.Indenter i)
    • withArrayIndenter

    • withObjectIndenter

      public DefaultPrettyPrinter withObjectIndenter(DefaultPrettyPrinter.Indenter i)
    • _withSpaces

      protected DefaultPrettyPrinter _withSpaces(boolean state)
    • withSeparators

      public DefaultPrettyPrinter withSeparators(Separators separators)
      Method for configuring separators for this pretty-printer to use
      Parameters:
      separators - Separator definitions to use
      Returns:
      This pretty-printer instance (for call chaining)
    • createInstance

      public DefaultPrettyPrinter createInstance()
      Description copied from interface: Instantiatable
      Method called to ensure that we have a non-blueprint object to use; it is either this object (if stateless), or a newly created object with separate state.
      Specified by:
      createInstance in interface Instantiatable<DefaultPrettyPrinter>
      Returns:
      Actual instance to use
    • writeRootValueSeparator

      public void writeRootValueSeparator(JsonGenerator g) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called after a root-level value has been completely output, and before another value is to be output.

      Default handling (without pretty-printing) will output a space, to allow values to be parsed correctly. Pretty-printer is to output some other suitable and nice-looking separator (tab(s), space(s), linefeed(s) or any combination thereof).

      Specified by:
      writeRootValueSeparator in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeStartObject

      public void writeStartObject(JsonGenerator g) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called when an Object value is to be output, before any fields are output.

      Default handling (without pretty-printing) will output the opening curly bracket. Pretty-printer is to output a curly bracket as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeStartObject in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • beforeObjectEntries

      public void beforeObjectEntries(JsonGenerator g) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called after object start marker has been output, and right before the Name of the first property is to be output. It is not called for objects without properties.

      Default handling does not output anything, but pretty-printer is free to add any white space decoration.

      Specified by:
      beforeObjectEntries in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeObjectNameValueSeparator

      public void writeObjectNameValueSeparator(JsonGenerator g) throws JacksonException
      Method called after the object property name has been output, but before the value is output.

      Default handling (without pretty-printing) will output a single colon to separate the two. Pretty-printer is to output a colon as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeObjectNameValueSeparator in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeObjectEntrySeparator

      public void writeObjectEntrySeparator(JsonGenerator g) throws JacksonException
      Method called after an object entry (field:value) has been completely output, and before another value is to be output.

      Default handling (without pretty-printing) will output a single comma to separate the two. Pretty-printer is to output a comma as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeObjectEntrySeparator in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeEndObject

      public void writeEndObject(JsonGenerator g, int nrOfEntries) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called after an Object value has been completely output (minus closing curly bracket).

      Default handling (without pretty-printing) will output the closing curly bracket. Pretty-printer is to output a curly bracket as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeEndObject in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      nrOfEntries - Number of direct members of the Object that have been output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeStartArray

      public void writeStartArray(JsonGenerator g) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called when an Array value is to be output, before any member/child values are output.

      Default handling (without pretty-printing) will output the opening bracket. Pretty-printer is to output a bracket as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeStartArray in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • beforeArrayValues

      public void beforeArrayValues(JsonGenerator g) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called after array start marker has been output, and right before the first value is to be output. It is not called for arrays with no values.

      Default handling does not output anything, but pretty-printer is free to add any white space decoration.

      Specified by:
      beforeArrayValues in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeArrayValueSeparator

      public void writeArrayValueSeparator(JsonGenerator g) throws JacksonException
      Method called after an array value has been completely output, and before another value is to be output.

      Default handling (without pretty-printing) will output a single comma to separate the two. Pretty-printer is to output a comma as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeArrayValueSeparator in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException
    • writeEndArray

      public void writeEndArray(JsonGenerator g, int nrOfValues) throws JacksonException
      Description copied from interface: PrettyPrinter
      Method called after an Array value has been completely output (minus closing bracket).

      Default handling (without pretty-printing) will output the closing bracket. Pretty-printer is to output a bracket as well, but can surround that with other (white-space) decoration.

      Specified by:
      writeEndArray in interface PrettyPrinter
      Parameters:
      g - Generator used for output
      nrOfValues - Number of direct members of the array that have been output
      Throws:
      JacksonIOException - if there is an underlying I/O problem
      StreamWriteException - for problems in encoding token stream
      JacksonException