org.eclipse.jetty.util.ajax

## Class JSON

- java.lang.Object
- - org.eclipse.jetty.util.ajax.JSON

    public class JSON
    extends Object

JSON Parser and Generator.

This class provides some static methods to convert POJOs to and from JSON notation. The mapping from JSON to java is:

       object ==> Map
       array  ==> Object[]
       number ==> Double or Long
       string ==> String
       null   ==> null
       bool   ==> Boolean

The java to JSON mapping is:

       String --> string
       Number --> number
       Map    --> object
       List   --> array
       Array  --> array
       null   --> null
       Boolean--> boolean
       Object --> string (dubious!)

The interface `JSON.Convertible` may be implemented by classes that wish to externalize and initialize specific fields to and from JSON objects. Only directed acyclic graphs of objects are supported.

The interface `JSON.Generator` may be implemented by classes that know how to render themselves as JSON and the `toString(Object)` method will use `JSON.Generator.addJSON(Appendable)` to generate the JSON. The class `JSON.Literal` may be used to hold pre-generated JSON object.

The interface `JSON.Convertor` may be implemented to provide static convertors for objects that may be registered with `registerConvertor(Class, org.eclipse.jetty.util.ajax.JSON.Convertor)` . These convertors are looked up by class, interface and super class by `getConvertor(Class)`.

If a JSON object has a "class" field, then a java class for that name is looked up and the method `convertTo(Class,Map)` is used to find a Convertor for that class. If a JSON object has a "x-class" field then a direct lookup for a Convertor for that named x-class is done, so that none java classes may be converted.

### Nested Class Summary

Nested Classes
`static interface` `JSON.Convertible` JSON Convertible object.
`static interface` `JSON.Convertor` Static JSON Convertor.
`static interface` `JSON.Generator` JSON Generator.
`static class` `JSON.Literal` A Literal JSON generator A utility instance of `JSON.Generator` that holds a pre-generated string on JSON text.
`static interface` `JSON.Output` JSON Output class for use by `JSON.Convertible`.
`static class` `JSON.ReaderSource`
`static interface` `JSON.Source`
`static class` `JSON.StringSource`

### Field Summary

Fields
`static JSON` `DEFAULT`

### Constructor Summary

Constructors
Constructor and Description
`JSON()`

### Method Summary

Methods
`void` `addConvertor(Class forClass, JSON.Convertor convertor)` Register a `JSON.Convertor` for a class or interface.
`void` `addConvertorFor(String name, JSON.Convertor convertor)` Register a `JSON.Convertor` for a named class or interface.
`void` `append(Appendable buffer, Object object)` Append object as JSON to string buffer.
`void` `append(StringBuffer buffer, Object object)` Deprecated.
`void` `appendArray(Appendable buffer, Collection collection)`
`void` `appendArray(Appendable buffer, Object array)`
`void` `appendArray(StringBuffer buffer, Collection collection)` Deprecated.
`void` `appendArray(StringBuffer buffer, Object array)` Deprecated.
`void` `appendBoolean(Appendable buffer, Boolean b)`
`void` `appendBoolean(StringBuffer buffer, Boolean b)` Deprecated.
`void` `appendJSON(Appendable buffer, JSON.Convertible converter)`
`void` `appendJSON(Appendable buffer, JSON.Convertor convertor, Object object)`
`void` `appendJSON(Appendable buffer, JSON.Generator generator)`
`void` `appendJSON(StringBuffer buffer, JSON.Convertible converter)` Deprecated.
`void` `appendJSON(StringBuffer buffer, JSON.Convertor convertor, Object object)` Deprecated.
`void` `appendJSON(StringBuffer buffer, JSON.Generator generator)` Deprecated.
`void` `appendMap(Appendable buffer, Map<?,?> map)`
`void` `appendMap(StringBuffer buffer, Map<?,?> map)` Deprecated.
`void` `appendNull(Appendable buffer)`
`void` `appendNull(StringBuffer buffer)` Deprecated.
`void` `appendNumber(Appendable buffer, Number number)`
`void` `appendNumber(StringBuffer buffer, Number number)` Deprecated.
`void` `appendString(Appendable buffer, String string)`
`void` `appendString(StringBuffer buffer, String string)` Deprecated.
`protected static void` `complete(String seek, JSON.Source source)`
`protected JSON` `contextFor(String field)`
`protected JSON` `contextForArray()`
`protected Object` `convertTo(Class type, Map map)`
`Object` `fromJSON(String json)` Convert JSON to Object
`protected JSON.Convertor` `getConvertor(Class forClass)` Lookup a convertor for a class.
`JSON.Convertor` `getConvertorFor(String name)` Lookup a convertor for a named class.
`static JSON` `getDefault()`
`int` `getStringBufferSize()`
`protected Object` `handleUnknown(JSON.Source source, char c)`
`protected Object[]` `newArray(int size)`
`protected Map<String,Object>` `newMap()`
`static Object` `parse(InputStream in)` Deprecated. use `parse(Reader)`
`static Object` `parse(InputStream in, boolean stripOuterComment)` Deprecated. use `parse(Reader, boolean)`
`Object` `parse(JSON.Source source)`
`Object` `parse(JSON.Source source, boolean stripOuterComment)`
`static Object` `parse(Reader in)`
`static Object` `parse(Reader in, boolean stripOuterComment)`
`static Object` `parse(String s)`
`static Object` `parse(String s, boolean stripOuterComment)`
`protected Object` `parseArray(JSON.Source source)`
`Number` `parseNumber(JSON.Source source)`
`protected Object` `parseObject(JSON.Source source)`
`protected String` `parseString(JSON.Source source)`
`static void` `registerConvertor(Class forClass, JSON.Convertor convertor)` Register a `JSON.Convertor` for a class or interface.
`protected void` `seekTo(char seek, JSON.Source source)`
`protected char` `seekTo(String seek, JSON.Source source)`
`static void` `setDefault(JSON json)` Deprecated.
`void` `setStringBufferSize(int stringBufferSize)`
`String` `toJSON(Object object)` Convert Object to JSON
`protected String` `toString(char[] buffer, int offset, int length)`
`static String` `toString(Map object)`
`static String` `toString(Object object)`
`static String` `toString(Object[] array)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT

    public static final JSON DEFAULT

### Constructor Detail

#### JSON

    public JSON()

### Method Detail

#### getStringBufferSize

    public int getStringBufferSize()

Returns:
  the initial stringBuffer size to use when creating JSON strings (default 1024)

#### setStringBufferSize

    public void setStringBufferSize(int stringBufferSize)

Parameters:
  `stringBufferSize` - the initial stringBuffer size to use when creating JSON strings (default 1024)

#### registerConvertor

    public static void registerConvertor(Class forClass,
                         JSON.Convertor convertor)

Register a `JSON.Convertor` for a class or interface.

Parameters:
  `forClass` - The class or interface that the convertor applies to
  `convertor` - the convertor

#### getDefault

    public static JSON getDefault()

#### setDefault

    @Deprecated
    public static void setDefault(JSON json)

Deprecated.

#### toString

    public static String toString(Object object)

#### toString

    public static String toString(Map object)

#### toString

    public static String toString(Object[] array)

#### parse

    public static Object parse(String s)

Parameters:
  `s` - String containing JSON object or array.
Returns:
  A Map, Object array or primitive array parsed from the JSON.

#### parse

    public static Object parse(String s,
               boolean stripOuterComment)

Parameters:
  `s` - String containing JSON object or array.
  `stripOuterComment` - If true, an outer comment around the JSON is ignored.
Returns:
  A Map, Object array or primitive array parsed from the JSON.

#### parse

    public static Object parse(Reader in)
                        throws IOException

Parameters:
  `in` - Reader containing JSON object or array.
Returns:
  A Map, Object array or primitive array parsed from the JSON.
Throws:
  `IOException`

#### parse

    public static Object parse(Reader in,
               boolean stripOuterComment)
                        throws IOException

Parameters:
  `in` - Reader containing JSON object or array.
  `stripOuterComment` - If true, an outer comment around the JSON is ignored.
Returns:
  A Map, Object array or primitive array parsed from the JSON.
Throws:
  `IOException`

#### parse

    @Deprecated
    public static Object parse(InputStream in)
                        throws IOException

Deprecated. use `parse(Reader)`

Parameters:
  `in` - Reader containing JSON object or array.
Returns:
  A Map, Object array or primitive array parsed from the JSON.
Throws:
  `IOException`

#### parse

    @Deprecated
    public static Object parse(InputStream in,
                          boolean stripOuterComment)
                        throws IOException

Deprecated. use `parse(Reader, boolean)`

Parameters:
  `in` - Stream containing JSON object or array.
  `stripOuterComment` - If true, an outer comment around the JSON is ignored.
Returns:
  A Map, Object array or primitive array parsed from the JSON.
Throws:
  `IOException`

#### toJSON

    public String toJSON(Object object)

Convert Object to JSON

Parameters:
  `object` - The object to convert
Returns:
  The JSON String

#### fromJSON

    public Object fromJSON(String json)

Convert JSON to Object

Parameters:
  `json` - The json to convert
Returns:
  The object

#### append

    @Deprecated
    public void append(StringBuffer buffer,
                         Object object)

Deprecated.

#### append

    public void append(Appendable buffer,
              Object object)

Append object as JSON to string buffer.

Parameters:
  `buffer` - the buffer to append to
  `object` - the object to append

#### appendNull

    @Deprecated
    public void appendNull(StringBuffer buffer)

Deprecated.

#### appendNull

    public void appendNull(Appendable buffer)

#### appendJSON

    @Deprecated
    public void appendJSON(StringBuffer buffer,
                             JSON.Convertor convertor,
                             Object object)

Deprecated.

#### appendJSON

    public void appendJSON(Appendable buffer,
                  JSON.Convertor convertor,
                  Object object)

#### appendJSON

    @Deprecated
    public void appendJSON(StringBuffer buffer,
                             JSON.Convertible converter)

Deprecated.

#### appendJSON

    public void appendJSON(Appendable buffer,
                  JSON.Convertible converter)

#### appendJSON

    @Deprecated
    public void appendJSON(StringBuffer buffer,
                             JSON.Generator generator)

Deprecated.

#### appendJSON

    public void appendJSON(Appendable buffer,
                  JSON.Generator generator)

#### appendMap

    @Deprecated
    public void appendMap(StringBuffer buffer,
                            Map<?,?> map)

Deprecated.

#### appendMap

    public void appendMap(Appendable buffer,
                 Map<?,?> map)

#### appendArray

    @Deprecated
    public void appendArray(StringBuffer buffer,
                              Collection collection)

Deprecated.

#### appendArray

    public void appendArray(Appendable buffer,
                   Collection collection)

#### appendArray

    @Deprecated
    public void appendArray(StringBuffer buffer,
                              Object array)

Deprecated.

#### appendArray

    public void appendArray(Appendable buffer,
                   Object array)

#### appendBoolean

    @Deprecated
    public void appendBoolean(StringBuffer buffer,
                                Boolean b)

Deprecated.

#### appendBoolean

    public void appendBoolean(Appendable buffer,
                     Boolean b)

#### appendNumber

    @Deprecated
    public void appendNumber(StringBuffer buffer,
                               Number number)

Deprecated.

#### appendNumber

    public void appendNumber(Appendable buffer,
                    Number number)

#### appendString

    @Deprecated
    public void appendString(StringBuffer buffer,
                               String string)

Deprecated.

#### appendString

    public void appendString(Appendable buffer,
                    String string)

#### toString

    protected String toString(char[] buffer,
                  int offset,
                  int length)

#### newMap

    protected Map<String,Object> newMap()

#### newArray

    protected Object[] newArray(int size)

#### contextForArray

    protected JSON contextForArray()

#### contextFor

    protected JSON contextFor(String field)

#### convertTo

    protected Object convertTo(Class type,
                   Map map)

#### addConvertor

    public void addConvertor(Class forClass,
                    JSON.Convertor convertor)

Register a `JSON.Convertor` for a class or interface.

Parameters:
  `forClass` - The class or interface that the convertor applies to
  `convertor` - the convertor

#### getConvertor

    protected JSON.Convertor getConvertor(Class forClass)

Lookup a convertor for a class.

If no match is found for the class, then the interfaces for the class are tried. If still no match is found, then the super class and it's interfaces are tried recursively.

Parameters:
  `forClass` - The class
Returns:
  a `JSON.Convertor` or null if none were found.

#### addConvertorFor

    public void addConvertorFor(String name,
                       JSON.Convertor convertor)

Register a `JSON.Convertor` for a named class or interface.

Parameters:
  `name` - name of a class or an interface that the convertor applies to
  `convertor` - the convertor

#### getConvertorFor

    public JSON.Convertor getConvertorFor(String name)

Lookup a convertor for a named class.

Parameters:
  `name` - name of the class
Returns:
  a `JSON.Convertor` or null if none were found.

#### parse

    public Object parse(JSON.Source source,
               boolean stripOuterComment)

#### parse

    public Object parse(JSON.Source source)

#### handleUnknown

    protected Object handleUnknown(JSON.Source source,
                       char c)

#### parseObject

    protected Object parseObject(JSON.Source source)

#### parseArray

    protected Object parseArray(JSON.Source source)

#### parseString

    protected String parseString(JSON.Source source)

#### parseNumber

    public Number parseNumber(JSON.Source source)

#### seekTo

    protected void seekTo(char seek,
              JSON.Source source)

#### seekTo

    protected char seekTo(String seek,
              JSON.Source source)

#### complete

    protected static void complete(String seek,
                JSON.Source source)