Class JSON
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 --> BooleanThe 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).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class
static interface
JSON Convertible object.static interface
Static JSON Convertor.static interface
JSON Generator.static class
A Literal JSON generator A utility instance ofJSON.Generator
that holds a pre-generated string on JSON text.static interface
JSON Output class for use byJSON.Convertible
.static class
static interface
static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map
<String, JSON.Convertor> private int
static final JSON
(package private) static final Logger
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addConvertor
(Class forClass, JSON.Convertor convertor) Register aJSON.Convertor
for a class or interface.void
addConvertorFor
(String name, JSON.Convertor convertor) Register aJSON.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, Object array) void
appendArray
(Appendable buffer, Collection collection) void
appendArray
(StringBuffer buffer, Object array) Deprecated.void
appendArray
(StringBuffer buffer, Collection collection) 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
protected Object
void
escapeString
(Appendable buffer, String input) protected void
escapeUnicode
(Appendable buffer, char c) Per spec, unicode characters are by default NOT escaped.Convert JSON to Objectprotected JSON.Convertor
getConvertor
(Class forClass) Lookup a convertor for a class.getConvertorFor
(String name) Lookup a convertor for a named class.static JSON
int
protected Object
handleUnknown
(JSON.Source source, char c) protected Object[]
newArray
(int size) newMap()
static Object
parse
(InputStream in) Deprecated.static Object
parse
(InputStream in, boolean stripOuterComment) Deprecated.static Object
static Object
static Object
static Object
parse
(JSON.Source source) parse
(JSON.Source source, boolean stripOuterComment) protected Object
parseArray
(JSON.Source source) parseNumber
(JSON.Source source) protected Object
parseObject
(JSON.Source source) protected String
parseString
(JSON.Source source) private void
quotedEscape
(Appendable buffer, String input) static void
registerConvertor
(Class forClass, JSON.Convertor convertor) Register aJSON.Convertor
for a class or interface.static void
reset()
Reset the default JSON behaviors to defaultprotected 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) Convert Object to JSONprotected String
toString
(char[] buffer, int offset, int length) static String
static String
static String
-
Field Details
-
LOG
-
DEFAULT
-
_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
Register aJSON.Convertor
for a class or interface.- Parameters:
forClass
- The class or interface that the convertor applies toconvertor
- the convertor
-
getDefault
-
setDefault
Deprecated. -
toString
-
toString
-
toString
-
parse
- Parameters:
s
- String containing JSON object or array.- Returns:
- A Map, Object array or primitive array parsed from the JSON.
-
parse
- 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
- 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
- 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.useparse(Reader)
- 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
-
escapeString
- Throws:
IOException
-
escapeUnicode
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
Convert Object to JSON- Parameters:
object
- The object to convert- Returns:
- The JSON String
-
fromJSON
Convert JSON to Object- Parameters:
json
- The json to convert- Returns:
- The object
-
append
Deprecated. -
append
Append object as JSON to string buffer.- Parameters:
buffer
- the buffer to append toobject
- the object to append
-
appendNull
Deprecated. -
appendNull
-
appendJSON
Deprecated. -
appendJSON
-
appendJSON
Deprecated. -
appendJSON
-
appendJSON
Deprecated. -
appendJSON
-
appendMap
Deprecated. -
appendMap
-
appendArray
Deprecated. -
appendArray
-
appendArray
Deprecated. -
appendArray
-
appendBoolean
Deprecated. -
appendBoolean
-
appendNumber
Deprecated. -
appendNumber
-
appendString
Deprecated. -
appendString
-
toString
-
newMap
-
newArray
-
contextForArray
-
contextFor
-
convertTo
-
addConvertor
Register aJSON.Convertor
for a class or interface.- Parameters:
forClass
- The class or interface that the convertor applies toconvertor
- the convertor
-
getConvertor
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
Register aJSON.Convertor
for a named class or interface.- Parameters:
name
- name of a class or an interface that the convertor applies toconvertor
- the convertor
-
getConvertorFor
Lookup a convertor for a named class.- Parameters:
name
- name of the class- Returns:
- a
JSON.Convertor
or null if none were found.
-
parse
-
parse
-
handleUnknown
-
parseObject
-
parseArray
-
parseString
-
parseNumber
-
seekTo
-
seekTo
-
complete
-
parse(Reader)