public class SpincastJsonManager extends Object implements JsonManager
| Modifier and Type | Field and Description |
|---|---|
static String |
ENUM_SERIALIZER_FIELD_NAME_LABEL |
static String |
ENUM_SERIALIZER_FIELD_NAME_NAME |
protected org.slf4j.Logger |
logger |
| Constructor and Description |
|---|
SpincastJsonManager(com.google.inject.Provider<com.google.inject.Injector> guiceProvider,
JsonObjectFactory jsonObjectFactory,
Set<JsonMixinInfo> jsonMixinInfos,
SpincastJsonManagerConfig spincastJsonManagerConfig,
SpincastConfig spincastConfig,
JsonPathUtils jsonPathUtils,
SpincastUtils spincastUtils,
FormFactory formFactory) |
| Modifier and Type | Method and Description |
|---|---|
Object |
clone(Object originalObject)
Tries to clone an object to a
JsonObject or
a JsonArray, if the object is not of
a primitive type (or BigDecimal). |
Object |
clone(Object originalObject,
boolean mutable)
Tries to clone an object to a
JsonObject or
a JsonArray, if the object is not of
a primitive type (or BigDecimal). |
JsonArray |
cloneJsonArray(JsonArray jsonArray,
boolean mutable)
Deep copy of the
JsonArray, so any
modification to the original won't affect the
clone, and vice-versa. |
JsonObject |
cloneJsonObject(JsonObject jsonObject,
boolean mutable)
Deep copy of the
JsonObject, so any
modification to the original won't affect the
clone, and vice-versa. |
protected void |
configureEmptyBeans(com.fasterxml.jackson.databind.ObjectMapper objectMapper) |
protected void |
configureMixins(com.fasterxml.jackson.databind.ObjectMapper objectMapper) |
protected void |
configureObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Configuration of the ObjectMapper.
|
String |
convertToJsonDate(Date date)
Converts a Date to a
Json date format. |
Object |
convertToNativeType(Object originalObject)
Convert a random object to a valid native JsonObject type, if
it's not already.
|
JsonObject |
create()
Creates an empty
JsonObject |
JsonArray |
createArray()
Creates an empty
JsonArray. |
Form |
createForm(String formName)
Creates an empty
Form, which is a JsonObject +
a validations container. |
protected com.fasterxml.jackson.databind.ObjectMapper |
createObjectManager()
Creates the ObjectMapper
|
JsonArray |
enumsToFriendlyJsonArray(Enum<?>[] enumValues)
Convert the enums to an array of
JsonObjects that
have a ".name" property (the name() of the enum)
and a ".label" property (the toString() of the
enum). |
JsonObject |
enumToFriendlyJsonObject(Enum<?> enumValue)
Convert the enum value to a
JsonObject that
has a ".name" property (the name() of the enum)
and a ".label" property (the toString() of the
enum) |
JsonObject |
fromClasspathFile(String path)
Creates a
JsonObject from a classpath
Json file. |
JsonObject |
fromFile(File jsonFile)
Creates a
JsonObject from a Json file. |
JsonObject |
fromFile(String jsonFilePath)
Creates a
JsonObject from the path of
a file, on the file system. |
JsonObject |
fromInputStream(InputStream inputStream)
Creates a
JsonObject from an inputStream. |
<T> T |
fromInputStream(InputStream inputStream,
Class<T> clazz)
Creates an instance of the specified
T type
from a Json inputStream. |
JsonArray |
fromInputStreamArray(InputStream inputStream)
Creates a
JsonArray from an inputStream. |
Map<String,Object> |
fromInputStreamToMap(InputStream inputStream)
Creates a
Map<String, Object> from a Json inputStream. |
JsonArray |
fromListArray(List<?> elements)
Creates a
JsonArray from a List
of elements. |
JsonObject |
fromMap(Map<String,?> params)
Creates an empty
JsonObject based on the specified Map. |
JsonObject |
fromMap(Map<String,?> params,
boolean parseKeysAsJsonPaths)
Creates an empty
JsonObject based on the specified Map. |
JsonObject |
fromString(String jsonString)
Creates a
JsonObject from a Json
String. |
<T> T |
fromString(String jsonString,
Class<T> clazz)
Creates an instance of the specified
T type
from a Json String. |
JsonArray |
fromStringArray(String jsonString)
Creates a
JsonArray from a Json
String. |
Map<String,Object> |
fromStringToMap(String jsonString)
Creates a
Map<String, Object> from a Json
String. |
protected com.fasterxml.jackson.databind.JsonSerializer<BigDecimal> |
getBigDecimalSerializer() |
protected com.fasterxml.jackson.databind.JsonSerializer<Date> |
getDateSerializer() |
Object |
getElementAtJsonPath(JsonArray array,
String jsonPath)
Gets an element from the
JsonArray at the
specified JsonPath. |
Object |
getElementAtJsonPath(JsonArray array,
String jsonPath,
Object defaultValue)
Gets an element from the
JsonArray at the
specified JsonPath. |
Object |
getElementAtJsonPath(JsonObject obj,
String jsonPath)
Gets an element from the
JsonObject
at the specified JsonPath. |
Object |
getElementAtJsonPath(JsonObject obj,
String jsonPath,
Object defaultValue)
Gets an element from the
JsonObject
at the specified JsonPath. |
protected com.fasterxml.jackson.databind.JsonSerializer<Enum<?>> |
getEnumSerializer() |
protected FormFactory |
getFormFactory() |
protected com.google.inject.Injector |
getGuice() |
protected com.fasterxml.jackson.databind.JsonSerializer<Instant> |
getInstantSerializer() |
protected com.fasterxml.jackson.core.util.DefaultPrettyPrinter |
getJacksonPrettyPrinter() |
protected String |
getJacksonPrettyPrinterIndentation() |
protected String |
getJacksonPrettyPrinterNewline() |
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonArray> |
getJsonArrayDeserializer() |
protected com.fasterxml.jackson.databind.JsonSerializer<JsonArray> |
getJsonArraySerializer() |
protected Set<JsonMixinInfo> |
getJsonMixinInfos() |
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonObject> |
getJsonObjectDeserializer() |
protected JsonObjectFactory |
getJsonObjectFactory() |
protected com.fasterxml.jackson.databind.JsonSerializer<JsonObject> |
getJsonObjectSerializer() |
protected JsonPathUtils |
getJsonPathUtils() |
protected int |
getMaxNumberOfKeysWhenConvertingMapToJsonObject() |
protected com.fasterxml.jackson.databind.ObjectMapper |
getObjectMapper() |
protected SpincastConfig |
getSpincastConfig() |
protected SpincastJsonManagerConfig |
getSpincastJsonManagerConfig() |
protected SpincastUtils |
getSpincastUtils() |
protected void |
injectDependencies(Object obj)
Once the deserialization of an Object is done,
we inject dependencies using Guice.
|
protected boolean |
isAllowCommentsInJson()
Should comments be accepted in Json?
|
boolean |
isElementExists(JsonArray array,
String jsonPath)
Does the array contain an element at
the specified
JsonPath (even if
null)? |
boolean |
isElementExists(JsonObject obj,
String jsonPath)
Does the object contain an element at
the specified
JsonPath (even if
null)? |
Date |
parseDateFromJson(String str)
Currently support ISO 8601 encoded dates.
|
void |
putElementAtJsonPath(JsonObjectOrArray objOrArray,
String jsonPath,
Object value)
Puts an element in the object at the specified
JsonPath. |
void |
putElementAtJsonPath(JsonObjectOrArray objOrArray,
String jsonPath,
Object value,
boolean clone)
Puts a clone of the element in the object at the
specified
JsonPath. |
protected void |
registerCustomModules(com.fasterxml.jackson.databind.ObjectMapper objectMapper) |
protected void |
registerCustomTypeSerializerModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Register our custom serializers for some types.
|
protected void |
registerJsonObjectModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Register our custom (de)serializers for JsonObject
|
void |
removeElementAtJsonPath(JsonArray array,
String jsonPath)
Removes an element at the specified
JsonPath from the
array. |
void |
removeElementAtJsonPath(JsonObject obj,
String jsonPath)
Removes an element at the specified
JsonPath from the
object. |
String |
toJsonString(Object obj)
Gets the
Json String representation of
the specified object. |
String |
toJsonString(Object obj,
boolean pretty)
Gets the
Json String representation of the
specified object. |
protected final org.slf4j.Logger logger
public static final String ENUM_SERIALIZER_FIELD_NAME_NAME
public static final String ENUM_SERIALIZER_FIELD_NAME_LABEL
@Inject
public SpincastJsonManager(com.google.inject.Provider<com.google.inject.Injector> guiceProvider,
JsonObjectFactory jsonObjectFactory,
@Nullable
Set<JsonMixinInfo> jsonMixinInfos,
SpincastJsonManagerConfig spincastJsonManagerConfig,
SpincastConfig spincastConfig,
JsonPathUtils jsonPathUtils,
SpincastUtils spincastUtils,
FormFactory formFactory)
protected com.google.inject.Injector getGuice()
protected JsonObjectFactory getJsonObjectFactory()
protected Set<JsonMixinInfo> getJsonMixinInfos()
protected SpincastJsonManagerConfig getSpincastJsonManagerConfig()
protected SpincastConfig getSpincastConfig()
protected JsonPathUtils getJsonPathUtils()
protected SpincastUtils getSpincastUtils()
protected FormFactory getFormFactory()
protected com.fasterxml.jackson.core.util.DefaultPrettyPrinter getJacksonPrettyPrinter()
protected String getJacksonPrettyPrinterNewline()
protected String getJacksonPrettyPrinterIndentation()
protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
protected com.fasterxml.jackson.databind.ObjectMapper createObjectManager()
protected void configureObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
protected boolean isAllowCommentsInJson()
https://github.com/FasterXML/jackson-core/wiki/JsonParser-Features#support-for-non-standard-data-format-constructsprotected void configureEmptyBeans(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
protected void configureMixins(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
protected com.fasterxml.jackson.databind.JsonSerializer<JsonObject> getJsonObjectSerializer()
protected com.fasterxml.jackson.databind.JsonSerializer<Enum<?>> getEnumSerializer()
protected com.fasterxml.jackson.databind.JsonSerializer<JsonArray> getJsonArraySerializer()
protected com.fasterxml.jackson.databind.JsonSerializer<Date> getDateSerializer()
protected com.fasterxml.jackson.databind.JsonSerializer<Instant> getInstantSerializer()
protected com.fasterxml.jackson.databind.JsonSerializer<BigDecimal> getBigDecimalSerializer()
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonObject> getJsonObjectDeserializer()
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonArray> getJsonArrayDeserializer()
protected void registerCustomModules(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
protected void registerJsonObjectModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
protected void registerCustomTypeSerializerModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
public String toJsonString(Object obj)
JsonManagerJson String representation of
the specified object.toJsonString in interface JsonManagerpublic String toJsonString(Object obj, boolean pretty)
JsonManagerJson String representation of the
specified object.toJsonString in interface JsonManagerpretty - if true, the generated
String will be formatted.protected void injectDependencies(Object obj)
public <T> T fromString(String jsonString, Class<T> clazz)
JsonManagerT type
from a Json String.fromString in interface JsonManagerpublic <T> T fromInputStream(InputStream inputStream, Class<T> clazz)
JsonManagerT type
from a Json inputStream.fromInputStream in interface JsonManagerpublic Map<String,Object> fromStringToMap(String jsonString)
JsonManagerMap<String, Object> from a Json
String.fromStringToMap in interface JsonManagerpublic Map<String,Object> fromInputStreamToMap(InputStream inputStream)
JsonManagerMap<String, Object> from a Json inputStream.fromInputStreamToMap in interface JsonManagerpublic JsonObject create()
JsonManagerJsonObjectcreate in interface JsonManagerpublic JsonObject fromString(String jsonString)
JsonManagerJsonObject from a Json
String.fromString in interface JsonManagerpublic JsonObject fromMap(Map<String,?> params)
JsonManagerJsonObject based on the specified Map.
An attempt will be made to create a deep copy of every elements so
a modification won't affect any external references and vice-versa.
The keys will be used as is, not parsed as JsonPaths.
fromMap in interface JsonManagerpublic JsonObject fromMap(Map<String,?> params, boolean parseKeysAsJsonPaths)
JsonManagerJsonObject based on the specified Map.
An attempt will be made to create a deep copy of every elements so
a modification won't affect any external references and vice-versa.fromMap in interface JsonManagerparseKeysAsJsonPaths - if true, the keys will
be parsed as JsonPaths, otherwise they will ne used
as is.protected int getMaxNumberOfKeysWhenConvertingMapToJsonObject()
public Object getElementAtJsonPath(JsonObject obj, String jsonPath)
JsonManagerJsonObject
at the specified JsonPath.getElementAtJsonPath in interface JsonManagernull if not found.public Object getElementAtJsonPath(JsonObject obj, String jsonPath, Object defaultValue)
JsonManagerJsonObject
at the specified JsonPath.getElementAtJsonPath in interface JsonManagernull if not found.public Object getElementAtJsonPath(JsonArray array, String jsonPath)
JsonManagerJsonArray at the
specified JsonPath.getElementAtJsonPath in interface JsonManagernull if not found.public Object getElementAtJsonPath(JsonArray array, String jsonPath, Object defaultValue)
JsonManagerJsonArray at the
specified JsonPath.getElementAtJsonPath in interface JsonManagernull if not found.public void putElementAtJsonPath(JsonObjectOrArray objOrArray, String jsonPath, Object value)
JsonManagerJsonPath.
All the hierarchy to the end of the JsonPath
is created if required.
putElementAtJsonPath in interface JsonManagerpublic void putElementAtJsonPath(JsonObjectOrArray objOrArray, String jsonPath, Object value, boolean clone)
JsonManagerJsonPath.
All the hierarchy to the end of the JsonPath
is created if required.
putElementAtJsonPath in interface JsonManagerpublic JsonObject fromInputStream(InputStream inputStream)
JsonManagerJsonObject from an inputStream.fromInputStream in interface JsonManagerpublic JsonObject fromFile(File jsonFile)
JsonManagerJsonObject from a Json file.fromFile in interface JsonManagerpublic JsonObject fromFile(String jsonFilePath)
JsonManagerJsonObject from the path of
a file, on the file system.fromFile in interface JsonManagerpublic JsonObject fromClasspathFile(String path)
JsonManagerJsonObject from a classpath
Json file.fromClasspathFile in interface JsonManagerpublic JsonArray createArray()
JsonManagerJsonArray.createArray in interface JsonManagerpublic JsonArray fromStringArray(String jsonString)
JsonManagerJsonArray from a Json
String.fromStringArray in interface JsonManagerpublic JsonArray fromListArray(List<?> elements)
JsonManagerJsonArray from a List
of elements.fromListArray in interface JsonManagerpublic JsonArray fromInputStreamArray(InputStream inputStream)
JsonManagerJsonArray from an inputStream.fromInputStreamArray in interface JsonManagerpublic Form createForm(String formName)
JsonManagerForm, which is a JsonObject +
a validations container.createForm in interface JsonManagerpublic String convertToJsonDate(Date date)
JsonManagerJson date format.convertToJsonDate in interface JsonManagerpublic Date parseDateFromJson(String str)
parseDateFromJson in interface JsonManagerpublic Object convertToNativeType(Object originalObject)
JsonManagerconvertToNativeType in interface JsonManagerpublic JsonObject cloneJsonObject(JsonObject jsonObject, boolean mutable)
JsonManagerJsonObject, so any
modification to the original won't affect the
clone, and vice-versa.
Note that if the current object is immutable and
the mutable parameter is set to false,
then the current object will be returned as is, since no cloning
is required.
cloneJsonObject in interface JsonManagermutable - if true the resulting
array and all its children will be mutable, otherwise
they will all be immutable.public JsonArray cloneJsonArray(JsonArray jsonArray, boolean mutable)
JsonManagerJsonArray, so any
modification to the original won't affect the
clone, and vice-versa.
Note that if the current object is immutable and
the mutable parameter is set to false,
then the current array will be returned as is, since no cloning
is required.
cloneJsonArray in interface JsonManagermutable - if true the resulting
array and all its children will be mutable, otherwise
they will all be immutable.public Object clone(Object originalObject)
JsonManagerJsonObject or
a JsonArray, if the object is not of
a primitive type (or BigDecimal).
The cloning is made by serializing the Object to a Json string, and deserializing back. So any (de)serialization rules apply.
The non primitive object will be cloned to a JsonArray
if it is a :
clone in interface JsonManagerpublic Object clone(Object originalObject, boolean mutable)
JsonManagerJsonObject or
a JsonArray, if the object is not of
a primitive type (or BigDecimal).
The cloning is made by serializing the Object to a Json string, and deserializing back. So any (de)serialization rules apply.
The non primitive object will be cloned to a JsonArray
if it is a :
clone in interface JsonManagermutable - if false, the resulting
Object and all its potential children
will be immutable.public void removeElementAtJsonPath(JsonObject obj, String jsonPath)
JsonManagerJsonPath from the
object.removeElementAtJsonPath in interface JsonManagerpublic void removeElementAtJsonPath(JsonArray array, String jsonPath)
JsonManagerJsonPath from the
array.removeElementAtJsonPath in interface JsonManagerpublic boolean isElementExists(JsonObject obj, String jsonPath)
JsonManagerJsonPath (even if
null)?isElementExists in interface JsonManagerpublic boolean isElementExists(JsonArray array, String jsonPath)
JsonManagerJsonPath (even if
null)?isElementExists in interface JsonManagerpublic JsonObject enumToFriendlyJsonObject(Enum<?> enumValue)
JsonManagerJsonObject that
has a ".name" property (the name() of the enum)
and a ".label" property (the toString() of the
enum)enumToFriendlyJsonObject in interface JsonManagerpublic JsonArray enumsToFriendlyJsonArray(Enum<?>[] enumValues)
JsonManagerJsonObjects that
have a ".name" property (the name() of the enum)
and a ".label" property (the toString() of the
enum).enumsToFriendlyJsonArray in interface JsonManagerCopyright © 2018. All rights reserved.