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 converters for objects that may be registered with registerConvertor(Class, Convertor). These converters 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 loaded and the method convertTo(Class, Map) is used to find a JSON.Convertor for that class.

If a JSON object has a "x-class" field then a direct lookup for a JSON.Convertor for that class name is done (without loading the class).

  • Field Details

    • LOG

      static final Logger LOG
    • DEFAULT

      public static final JSON DEFAULT
    • _convertors

      private Map<String,JSON.Convertor> _convertors
    • _stringBufferSize

      private int _stringBufferSize
  • Constructor Details

    • JSON

      public JSON()
  • Method Details

    • reset

      public static void reset()
      Reset the default JSON behaviors to default
    • 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 - if unable to parse
    • 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 - if unable to parse
    • parse

      @Deprecated public static Object parse(InputStream in) throws IOException
      Deprecated.
      Parameters:
      in - Reader containing JSON object or array.
      Returns:
      A Map, Object array or primitive array parsed from the JSON.
      Throws:
      IOException - if unable to parse
    • parse

      @Deprecated public static Object parse(InputStream in, boolean stripOuterComment) throws IOException
      Deprecated.
      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 - if unable to parse
    • quotedEscape

      private void quotedEscape(Appendable buffer, String input)
    • escapeString

      public void escapeString(Appendable buffer, String input) throws IOException
      Throws:
      IOException
    • escapeUnicode

      protected void escapeUnicode(Appendable buffer, char c) throws IOException
      Per spec, unicode characters are by default NOT escaped. This overridable allows for alternate behavior to escape those with your choice of encoding. protected void escapeUnicode(Appendable buffer, char c) throws IOException { // Unicode is slash-u escaped buffer.append(String.format("\\u%04x", (int)c)); }
      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)