public class

JsonWriter

extends Object
implements ExtendedHierarchicalStreamWriter
java.lang.Object
   ↳ com.thoughtworks.xstream.io.json.JsonWriter
Known Direct Subclasses

Class Overview

A simple writer that outputs JSON in a pretty-printed indented stream. Arrays, Lists and Sets rely on you NOT using XStream.addImplicitCollection(..).

Summary

Nested Classes
class JsonWriter.Node  
Constants
int DROP_ROOT_MODE DROP_ROOT_MODE drops the JSON root node.
int STRICT_MODE STRICT_MODE prevents invalid JSON for single value objects when dropping the root.
Public Constructors
JsonWriter(Writer writer, char[] lineIndenter, String newLine)
JsonWriter(Writer writer, char[] lineIndenter)
JsonWriter(Writer writer, String lineIndenter, String newLine)
JsonWriter(Writer writer, String lineIndenter)
JsonWriter(Writer writer)
JsonWriter(Writer writer, char[] lineIndenter, String newLine, int mode)
JsonWriter(Writer writer, int mode)
Create a JsonWriter where the writer mode can be chosen.
Public Methods
void addAttribute(String key, String value)
void close()
Close the writer, if necessary.
void endNode()
void flush()
Flush the writer, if necessary.
void setValue(String text)
Write the value (text content) of the current node.
void startNode(String name, Class clazz)
void startNode(String name)
This method is deprecated. since 1.2, use startNode(String name, Class clazz) instead.
HierarchicalStreamWriter underlyingWriter()
Return the underlying HierarchicalStreamWriter implementation.
Protected Methods
void endOfLine()
void writeAttributeValue(QuickWriter writer, String text)
void writeText(QuickWriter writer, String text)
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.thoughtworks.xstream.io.ExtendedHierarchicalStreamWriter
From interface com.thoughtworks.xstream.io.HierarchicalStreamWriter

Constants

public static final int DROP_ROOT_MODE

DROP_ROOT_MODE drops the JSON root node.

The root node is the first level of the JSON object i.e.

 { "person": {
     "name": "Joe"
 }}
 
will be written without root simply as
 {
     "name": "Joe"
 }
 
Without a root node, the top level element might now also be an array. However, it is possible to generate invalid JSON unless STRICT_MODE is also set.

Constant Value: 1 (0x00000001)

public static final int STRICT_MODE

STRICT_MODE prevents invalid JSON for single value objects when dropping the root.

The mode is only useful in combination with the DROP_ROOT_MODE. An object with a single value as first node i.e.

 { "name": "Joe" }
 
is simply written as
 "Joe"
 
However, this is no longer valid JSON. Therefore you can activate STRICT_MODE and a ConversionException is thrown instead.

Constant Value: 2 (0x00000002)

Public Constructors

public JsonWriter (Writer writer, char[] lineIndenter, String newLine)

public JsonWriter (Writer writer, char[] lineIndenter)

public JsonWriter (Writer writer, String lineIndenter, String newLine)

public JsonWriter (Writer writer, String lineIndenter)

public JsonWriter (Writer writer)

public JsonWriter (Writer writer, char[] lineIndenter, String newLine, int mode)

public JsonWriter (Writer writer, int mode)

Create a JsonWriter where the writer mode can be chosen.

Following constants can be used as bit mask:

Parameters
writer the Writer where the JSON is written to
mode the JsonWriter mode

Public Methods

public void addAttribute (String key, String value)

public void close ()

Close the writer, if necessary.

public void endNode ()

public void flush ()

Flush the writer, if necessary.

public void setValue (String text)

Write the value (text content) of the current node.

public void startNode (String name, Class clazz)

public void startNode (String name)

This method is deprecated.
since 1.2, use startNode(String name, Class clazz) instead.

public HierarchicalStreamWriter underlyingWriter ()

Return the underlying HierarchicalStreamWriter implementation.

If a Converter needs to access methods of a specific HierarchicalStreamWriter implementation that are not defined in the HierarchicalStreamWriter interface, it should call this method before casting. This is because the writer passed to the Converter is often wrapped/decorated by another implementation to provide additional functionality (such as XPath tracking).

For example:

MySpecificWriter mySpecificWriter = (MySpecificWriter)writer; // INCORRECT!
 mySpecificWriter.doSomethingSpecific();
MySpecificWriter mySpecificWriter = (MySpecificWriter)writer.underlyingWriter();  // CORRECT!
 mySpecificWriter.doSomethingSpecific();

Implementations of HierarchicalStreamWriter should return 'this', unless they are a decorator, in which case they should delegate to whatever they are wrapping.

Protected Methods

protected void endOfLine ()

protected void writeAttributeValue (QuickWriter writer, String text)

protected void writeText (QuickWriter writer, String text)