public class JsonReader extends Object implements Closeable
JsonReader.jsonToJava(String json)
. This will
return a typed Java object graph.JsonReader.jsonToMaps(String json)
. This will
return an untyped object representation of the JSON String as a Map of Maps, where
the fields are the Map keys, and the field values are the associated Map's values. You can
call the JsonWriter.objectToJson() method with the returned Map, and it will serialize
the Graph into the equivalent JSON stream from which it was read.
JsonReader(InputStream in)
and then call
readObject()
. Cast the return value of readObject() to the Java class that was the root of
the graph.
JsonReader(InputStream in, true)
and then call
readObject()
. The return value will be a Map of Maps.
Modifier and Type | Class and Description |
---|---|
static interface |
JsonReader.ClassFactory
Subclass this interface and create a class that will return a new instance of the
passed in Class (c).
|
static class |
JsonReader.CollectionFactory
Use to create new instances of collection interfaces (needed for empty collections)
|
static interface |
JsonReader.JsonClassReader
Implement this interface to add a custom JSON reader.
|
static interface |
JsonReader.JsonClassReaderBase
Common ancestor for JsonClassReader
|
static interface |
JsonReader.JsonClassReaderEx
Implement this interface to add a custom JSON reader.
|
static class |
JsonReader.MapFactory
Use to create new instances of Map interfaces (needed for empty Maps).
|
static interface |
JsonReader.MissingFieldHandler
Used to react to fields missing when reading an object.
|
Modifier and Type | Field and Description |
---|---|
protected static Map<String,JsonReader.ClassFactory> |
BASE_CLASS_FACTORIES |
protected static Map<Class<?>,JsonReader.JsonClassReader> |
BASE_READERS |
protected Map<String,JsonReader.ClassFactory> |
classFactories |
static String |
CLASSLOADER
If set, use the specified ClassLoader
|
static String |
CUSTOM_READER_MAP
If set, this maps class ==> CustomReader
|
static String |
FACTORIES
If set, this map will contain Factory classes for creating hard to instantiate objects.
|
static String |
FAIL_ON_UNKNOWN_TYPE
Will fail JSON parsing if 'type' class defined but is not on classpath.
|
static String |
JSON_READER
Pointer to 'this' (automatically placed in the Map)
|
static String |
MISSING_FIELD_HANDLER
If set, this object will be called when a field is present in the JSON but missing from the corresponding class
|
protected JsonReader.MissingFieldHandler |
missingFieldHandler |
static String |
NOT_CUSTOM_READER_MAP
If set, this indicates that no custom reader should be used for the specified class ==> CustomReader
|
protected Set<Class<?>> |
notCustom |
static String |
OBJECT_RESOLVER
Pointer to the current ObjectResolver (automatically placed in the Map)
|
protected Map<Class<?>,JsonReader.JsonClassReader> |
readers |
static String |
TYPE_NAME_MAP
If set, this map will be used when reading @type values - allows short-hand abbreviations type names
|
static String |
UNKNOWN_OBJECT
What to do when an object is found and 'type' cannot be determined.
|
static String |
USE_MAPS
If set, the read-in JSON will be turned into a Map of Maps (JsonObject) representation
|
Constructor and Description |
---|
JsonReader() |
JsonReader(byte[] inp,
Map<String,Object> optionalArgs) |
JsonReader(byte[] inp,
Map<String,Object> optionalArgs,
int maxDepth) |
JsonReader(InputStream inp) |
JsonReader(InputStream inp,
boolean useMaps) |
JsonReader(InputStream inp,
boolean useMaps,
int maxDepth) |
JsonReader(InputStream inp,
int maxDepth) |
JsonReader(InputStream inp,
Map<String,Object> optionalArgs) |
JsonReader(InputStream inp,
Map<String,Object> optionalArgs,
int maxDepth) |
JsonReader(int maxDepth) |
JsonReader(Map<String,Object> optionalArgs)
Use this constructor if you already have a JsonObject graph and want to parse it into
Java objects by calling jsonReader.jsonObjectsToJava(rootJsonObject) after constructing
the JsonReader.
|
JsonReader(Map<String,Object> optionalArgs,
int maxDepth)
Use this constructor if you already have a JsonObject graph and want to parse it into
Java objects by calling jsonReader.jsonObjectsToJava(rootJsonObject) after constructing
the JsonReader.
|
JsonReader(String inp,
Map<String,Object> optionalArgs) |
JsonReader(String inp,
Map<String,Object> optionalArgs,
int maxDepth) |
Modifier and Type | Method and Description |
---|---|
void |
addNotCustomReader(Class c)
Force json-io to use it's internal generic approach to writing the
passed in class, even if a Custom JSON reader is specified for its
parent class.
|
void |
addReader(Class c,
JsonReader.JsonClassReader reader)
Deprecated.
use ReadOptionsBuilder to create any additional readers you'll need.
|
static void |
addReaderPermanent(Class c,
JsonReader.JsonClassReader reader)
Call this method to add a custom JSON reader to json-io.
|
static void |
assignInstantiator(Class c,
JsonReader.ClassFactory factory)
See comment on method JsonReader.assignInstantiator(String, ClassFactory)
|
static void |
assignInstantiator(String className,
JsonReader.ClassFactory factory)
For difficult to instantiate classes, you can add your own ClassFactory
which will be called when the passed in class 'c' is encountered.
|
void |
close() |
protected Object |
convertParsedMapsToJava(JsonObject root)
This method converts a root Map, (which contains nested Maps
and so forth representing a Java Object graph), to a Java
object instance.
|
Object |
jsonObjectsToJava(JsonObject root)
Convert a root JsonObject that represents parsed JSON, into
an actual Java object.
|
static <T> T |
jsonToJava(InputStream inputStream,
Map<String,Object> optionalArgs)
Convert the passed in JSON string into a Java object graph.
|
static <T> T |
jsonToJava(InputStream inputStream,
Map<String,Object> optionalArgs,
int maxDepth)
Convert the passed in JSON string into a Java object graph.
|
static <T> T |
jsonToJava(String json)
Convert the passed in JSON string into a Java object graph.
|
static <T> T |
jsonToJava(String json,
Map<String,Object> optionalArgs)
Convert the passed in JSON string into a Java object graph.
|
static Object |
jsonToJava(String json,
Map<String,Object> optionalArgs,
int maxDepth)
Convert the passed in JSON string into a Java object graph.
|
static Map |
jsonToMaps(InputStream inputStream,
Map<String,Object> optionalArgs)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(inputStream, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
static Map |
jsonToMaps(InputStream inputStream,
Map<String,Object> optionalArgs,
int maxDepth)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(inputStream, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
static Map |
jsonToMaps(String json)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(String json, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
static Map |
jsonToMaps(String json,
int maxDepth)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(String json, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
static Map |
jsonToMaps(String json,
Map<String,Object> optionalArgs)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(String json, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
static Map |
jsonToMaps(String json,
Map<String,Object> optionalArgs,
int maxDepth)
Map args = ["USE_MAPS": true]
Use JsonReader.jsonToJava(String json, args)
Note that the return type will match the JSON type (array, object, string, long, boolean, or null).
|
Object |
newInstance(Class<?> c,
JsonObject jsonObject) |
Object |
readObject()
Read JSON input from the stream that was set up in the constructor, turning it into
Java Maps (JsonObject's).
|
protected boolean |
useMaps() |
public static final String CUSTOM_READER_MAP
public static final String NOT_CUSTOM_READER_MAP
public static final String USE_MAPS
public static final String UNKNOWN_OBJECT
public static final String FAIL_ON_UNKNOWN_TYPE
public static final String JSON_READER
public static final String OBJECT_RESOLVER
public static final String TYPE_NAME_MAP
public static final String MISSING_FIELD_HANDLER
public static final String CLASSLOADER
public static final String FACTORIES
protected static Map<Class<?>,JsonReader.JsonClassReader> BASE_READERS
protected final Map<Class<?>,JsonReader.JsonClassReader> readers
protected final Map<String,JsonReader.ClassFactory> classFactories
protected JsonReader.MissingFieldHandler missingFieldHandler
protected static final Map<String,JsonReader.ClassFactory> BASE_CLASS_FACTORIES
public JsonReader(int maxDepth)
public JsonReader()
public JsonReader(InputStream inp, int maxDepth)
public JsonReader(InputStream inp)
public JsonReader(Map<String,Object> optionalArgs, int maxDepth)
optionalArgs
- Map of optional arguments for the JsonReader.maxDepth
- Maximum parsing depth.public JsonReader(Map<String,Object> optionalArgs)
optionalArgs
- Map of optional arguments for the JsonReader.public JsonReader(InputStream inp, boolean useMaps, int maxDepth)
public JsonReader(InputStream inp, boolean useMaps)
public JsonReader(InputStream inp, Map<String,Object> optionalArgs, int maxDepth)
public JsonReader(InputStream inp, Map<String,Object> optionalArgs)
public static void assignInstantiator(String className, JsonReader.ClassFactory factory)
This API is an 'escape hatch' to allow ANY object to be instantiated by JsonReader and is useful when you encounter a class that JsonReader cannot instantiate using its internal exhausting attempts (trying all constructors, varying arguments to them, etc.)
className
- Class name to assign an ClassFactory tofactory
- ClassFactory that will create 'c' instancespublic static void assignInstantiator(Class c, JsonReader.ClassFactory factory)
@Deprecated public void addReader(Class c, JsonReader.JsonClassReader reader)
c
- Class to assign a custom JSON reader toreader
- The JsonClassReader which will read the custom JSON format of 'c'public static void addReaderPermanent(Class c, JsonReader.JsonClassReader reader)
c
- Class to assign a custom JSON reader toreader
- The JsonClassReader which will read the custom JSON format of 'c'public void addNotCustomReader(Class c)
c
- Class to which to force no custom JSON reading to occur.
Normally, this is not needed, however, if a reader is assigned to a
parent class of 'c', then calling this method on 'c' will prevent
any custom reader from processing class 'c'public static <T> T jsonToJava(String json)
json
- String JSON inputpublic static Object jsonToJava(String json, Map<String,Object> optionalArgs, int maxDepth)
json
- String JSON inputoptionalArgs
- Map of optional parameters to control parsing. See readme file for details.maxDepth
- Maximum parsing depth.public static <T> T jsonToJava(String json, Map<String,Object> optionalArgs)
json
- String JSON inputoptionalArgs
- Map of optional parameters to control parsing. See readme file for details.public static <T> T jsonToJava(InputStream inputStream, Map<String,Object> optionalArgs, int maxDepth)
inputStream
- InputStream containing JSON inputoptionalArgs
- Map of optional parameters to control parsing. See readme file for details.maxDepth
- Maximum parsing depth.public static <T> T jsonToJava(InputStream inputStream, Map<String,Object> optionalArgs)
inputStream
- InputStream containing JSON inputoptionalArgs
- Map of optional parameters to control parsing. See readme file for details.public static Map jsonToMaps(String json, int maxDepth)
json
- String of JSON contentmaxDepth
- Maximum parsing depth.public static Map jsonToMaps(String json)
json
- String of JSON contentpublic static Map jsonToMaps(String json, Map<String,Object> optionalArgs, int maxDepth)
json
- String of JSON contentoptionalArgs
- Map of optional arguments to control customization. See readme file for
details on these options.maxDepth
- Maximum parsing depth.public static Map jsonToMaps(String json, Map<String,Object> optionalArgs)
json
- String of JSON contentoptionalArgs
- Map of optional arguments to control customization. See readme file for
details on these options.public static Map jsonToMaps(InputStream inputStream, Map<String,Object> optionalArgs, int maxDepth)
inputStream
- containing JSON contentoptionalArgs
- Map of optional arguments to control customization. See readme file for
details on these options.maxDepth
- Maximum parsing depth.public static Map jsonToMaps(InputStream inputStream, Map<String,Object> optionalArgs)
inputStream
- containing JSON contentoptionalArgs
- Map of optional arguments to control customization. See readme file for
details on these options.public Object readObject()
public Object jsonObjectsToJava(JsonObject root)
root
- JsonObject instance that was the root object from the
JSON input that was parsed in an earlier call to JsonReader.protected boolean useMaps()
protected Object convertParsedMapsToJava(JsonObject root)
root
- JsonObject instance that was the root object from the
JSON input that was parsed in an earlier call to JsonReader.public Object newInstance(Class<?> c, JsonObject jsonObject)
public void close()
close
in interface Closeable
close
in interface AutoCloseable
Copyright © 2023. All rights reserved.