Created
May 7, 2016 00:00
-
-
Save zhgqthomas/5efe75baf4ef72dc468fce614ea501c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/****************************************************************************** | |
* Copyright (c) 2011 GitHub Inc. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Kevin Sawicki (GitHub Inc.) - initial API and implementation | |
*****************************************************************************/ | |
package org.eclipse.egit.github.core.client; | |
import static com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES; | |
import com.google.gson.Gson; | |
import com.google.gson.GsonBuilder; | |
import java.io.Reader; | |
import java.lang.reflect.Type; | |
import java.util.Date; | |
import org.eclipse.egit.github.core.event.Event; | |
/** | |
* Gson utilities. | |
*/ | |
public abstract class GsonUtils { | |
private static final Gson GSON = createGson(true); | |
private static final Gson GSON_NO_NULLS = createGson(false); | |
/** | |
* Create the standard {@link Gson} configuration | |
* | |
* @return created gson, never null | |
*/ | |
public static final Gson createGson() { | |
return createGson(true); | |
} | |
/** | |
* Create the standard {@link Gson} configuration | |
* | |
* @param serializeNulls | |
* whether nulls should be serialized | |
* | |
* @return created gson, never null | |
*/ | |
public static final Gson createGson(final boolean serializeNulls) { | |
final GsonBuilder builder = new GsonBuilder(); | |
builder.registerTypeAdapter(Date.class, new DateFormatter()); | |
builder.registerTypeAdapter(Event.class, new EventFormatter()); | |
builder.setFieldNamingPolicy(LOWER_CASE_WITH_UNDERSCORES); | |
if (serializeNulls) | |
builder.serializeNulls(); | |
return builder.create(); | |
} | |
/** | |
* Get reusable pre-configured {@link Gson} instance | |
* | |
* @return Gson instance | |
*/ | |
public static final Gson getGson() { | |
return GSON; | |
} | |
/** | |
* Get reusable pre-configured {@link Gson} instance | |
* | |
* @param serializeNulls | |
* @return Gson instance | |
*/ | |
public static final Gson getGson(final boolean serializeNulls) { | |
return serializeNulls ? GSON : GSON_NO_NULLS; | |
} | |
/** | |
* Convert object to json | |
* | |
* @param object | |
* @return json string | |
*/ | |
public static final String toJson(final Object object) { | |
return toJson(object, true); | |
} | |
/** | |
* Convert object to json | |
* | |
* @param object | |
* @param includeNulls | |
* @return json string | |
*/ | |
public static final String toJson(final Object object, | |
final boolean includeNulls) { | |
return includeNulls ? GSON.toJson(object) : GSON_NO_NULLS | |
.toJson(object); | |
} | |
/** | |
* Convert string to given type | |
* | |
* @param json | |
* @param type | |
* @return instance of type | |
*/ | |
public static final <V> V fromJson(String json, Class<V> type) { | |
return GSON.fromJson(json, type); | |
} | |
/** | |
* Convert string to given type | |
* | |
* @param json | |
* @param type | |
* @return instance of type | |
*/ | |
public static final <V> V fromJson(String json, Type type) { | |
return GSON.fromJson(json, type); | |
} | |
/** | |
* Convert content of reader to given type | |
* | |
* @param reader | |
* @param type | |
* @return instance of type | |
*/ | |
public static final <V> V fromJson(Reader reader, Class<V> type) { | |
return GSON.fromJson(reader, type); | |
} | |
/** | |
* Convert content of reader to given type | |
* | |
* @param reader | |
* @param type | |
* @return instance of type | |
*/ | |
public static final <V> V fromJson(Reader reader, Type type) { | |
return GSON.fromJson(reader, type); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment