All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.pagar.util.JSONUtils Maven / Gradle / Ivy

The newest version!
package me.pagar.util;

import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;

import java.lang.reflect.Type;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class JSONUtils {

    public static final Gson getInterpreter() {
        return getNewDefaultGsonBuilder().create();
    }

    public static  T getAsObject(JsonObject json, Class clazz) {
        return getNewDefaultGsonBuilder().create().fromJson(json, clazz);
    }

    public static  T getAsObject(JsonObject json, DateTimeAdapter adapter, Class clazz) {
        GsonBuilder builder = getNewDefaultGsonBuilder().registerTypeAdapter(DateTime.class, adapter);
        return builder.create().fromJson(json, clazz);
    }

    public static  Collection getAsList(JsonArray json, Type listType) {
        return getNewDefaultGsonBuilder().create().fromJson(json, listType);
    }

    public static  Collection getAsList(JsonArray json, DateTimeAdapter adapter, Type listType) {
        GsonBuilder builder = getNewDefaultGsonBuilder().registerTypeAdapter(DateTime.class, adapter);
        return builder.create().fromJson(json, listType);
    }

    public static String getAsJson(Object object) {
        return getNewDefaultGsonBuilder().create().toJson(object);
    }

    public static String getAsJson(Object object, DateTimeAdapter adapter) {
        GsonBuilder builder = getNewDefaultGsonBuilder().registerTypeAdapter(DateTime.class, adapter);
        return builder.create().toJson(object);
    }

    public static Map objectToMap(Object object) {
        GsonBuilder builder = getNewDefaultGsonBuilder();
        final String json = builder.create().toJson(object);
        return builder.create().fromJson(json, new TypeToken>() {
        }.getType());
    }

    public static Map objectToMap(Object object, DateTimeAdapter adapter) {
        GsonBuilder builder = getNewDefaultGsonBuilder().registerTypeAdapter(DateTime.class, adapter);
        final String json = builder.create().toJson(object);
        return builder.create().fromJson(json, new TypeToken>() {
        }.getType());
    }

    public static JsonObject treeToJson(Object object) {
        return getNewDefaultGsonBuilder().create().toJsonTree(object).getAsJsonObject();
    }

    private static GsonBuilder getNewDefaultGsonBuilder(){
        return new GsonBuilder()
            .excludeFieldsWithoutExposeAnnotation()
            .registerTypeAdapter(DateTime.class, new DateTimeIsodateAdapter())
            .registerTypeAdapter(LocalDate.class, new LocalDateAdapter())
            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
            .setExclusionStrategies(new ExclusionStrategy(){

                public boolean shouldSkipClass(Class clazz) {
                    return false;
                }

                public boolean shouldSkipField(FieldAttributes fieldAttrs) {
                    return fieldAttrs.equals(null);
                }
                
            });
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy