package com.brightgenerous.json; import java.io.Reader; import java.io.Serializable; import java.lang.reflect.Type; import com.brightgenerous.commons.EqualsUtils; import com.brightgenerous.commons.HashCodeUtils; import com.brightgenerous.commons.ToStringUtils; import com.brightgenerous.json.delegate.JsonUtility; @SuppressWarnings("deprecation") public class JsonUtils implements Serializable { private static final long serialVersionUID = -8083708706919305178L; public static boolean useful() { return JsonUtility.USEFUL; } public static boolean gson() { return JsonUtility.GSON; } public static boolean jsonic() { return JsonUtility.JSONIC; } public static boolean jackson() { return JsonUtility.JACKSON; } private static final boolean DEFAULT_SERIALIZE_NULLS = false; private final String dateFormat; private final boolean serializeNulls; private JsonUtils(String dateFormat, boolean serializeNulls) { this.dateFormat = dateFormat; this.serializeNulls = serializeNulls; } public static JsonUtils get() { return get(null); } public static JsonUtils get(String dateFormat) { return get(dateFormat, DEFAULT_SERIALIZE_NULLS); } public static JsonUtils get(boolean serializeNulls) { return get(null, serializeNulls); } public static JsonUtils get(String dateFormat, boolean serializeNulls) { return getInstance(dateFormat, serializeNulls); } protected static JsonUtils getInstance(String dateFormat, boolean serializeNulls) { return new JsonUtils(dateFormat, serializeNulls); } public <T> T parseJson(String json, Class<T> clazz) throws JsonException { return parseJson(json, clazz, dateFormat, serializeNulls); } public <T> T parseJson(String json, Type type) throws JsonException { return parseJson(json, type, dateFormat, serializeNulls); } public <T> T parseJson(Reader json, Class<T> clazz) throws JsonException { return parseJson(json, clazz, dateFormat, serializeNulls); } public <T> T parseJson(Reader json, Type type) throws JsonException { return parseJson(json, type, dateFormat, serializeNulls); } public String formatJson(Object obj) { return formatJson(obj, dateFormat, serializeNulls); } public String formatJson(Object obj, Type type) { return formatJson(obj, type, dateFormat, serializeNulls); } public static <T> T parseJson(String json, Class<T> clazz, String dateFormat) throws JsonException { return JsonUtility.parseJson(json, clazz, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static <T> T parseJson(String json, Class<T> clazz, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, clazz, serializeNulls); } public static <T> T parseJson(String json, Class<T> clazz, String dateFormat, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, clazz, dateFormat, serializeNulls); } public static <T> T parseJson(String json, Type type, String dateFormat) throws JsonException { return JsonUtility.parseJson(json, type, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static <T> T parseJson(String json, Type type, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, type, serializeNulls); } public static <T> T parseJson(String json, Type type, String dateFormat, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, type, dateFormat, serializeNulls); } public static <T> T parseJson(Reader json, Class<T> clazz, String dateFormat) throws JsonException { return JsonUtility.parseJson(json, clazz, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static <T> T parseJson(Reader json, Class<T> clazz, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, clazz, serializeNulls); } public static <T> T parseJson(Reader json, Class<T> clazz, String dateFormat, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, clazz, dateFormat, serializeNulls); } public static <T> T parseJson(Reader json, Type type, String dateFormat) throws JsonException { return JsonUtility.parseJson(json, type, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static <T> T parseJson(Reader json, Type type, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, type, serializeNulls); } public static <T> T parseJson(Reader json, Type type, String dateFormat, boolean serializeNulls) throws JsonException { return JsonUtility.parseJson(json, type, dateFormat, serializeNulls); } public static String formatJson(Object obj, String dateFormat) { return JsonUtility.formatJson(obj, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static String formatJson(Object obj, boolean serializeNulls) { return JsonUtility.formatJson(obj, serializeNulls); } public static String formatJson(Object obj, String dateFormat, boolean serializeNulls) { return JsonUtility.formatJson(obj, dateFormat, serializeNulls); } public static String formatJson(Object obj, Type type, String dateFormat) { return JsonUtility.formatJson(obj, type, dateFormat, DEFAULT_SERIALIZE_NULLS); } public static String formatJson(Object obj, Type type, boolean serializeNulls) { return JsonUtility.formatJson(obj, type, serializeNulls); } public static String formatJson(Object obj, Type type, String dateFormat, boolean serializeNulls) { return JsonUtility.formatJson(obj, type, dateFormat, serializeNulls); } @Override public int hashCode() { if (HashCodeUtils.resolved()) { return HashCodeUtils.hashCodeAlt(null, this); } return super.hashCode(); } @Override public boolean equals(Object obj) { if (EqualsUtils.resolved()) { return EqualsUtils.equalsAlt(null, this, obj); } return super.equals(obj); } @Override public String toString() { if (ToStringUtils.resolved()) { return ToStringUtils.toStringAlt(this); } return super.toString(); } }