Java tutorial
/* * This project constitutes a work of the United States Government and is * not subject to domestic copyright protection under 17 USC 105. * * However, because the project utilizes code licensed from contributors * and other third parties, it therefore is licensed under the MIT * License. http://opensource.org/licenses/mit-license.php. Under that * license, permission is granted free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the conditions that any appropriate copyright notices and this * permission notice are included in all copies or substantial portions * of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /****************************************************************************** * 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 gov.whitehouse.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.Reader; import java.lang.reflect.Type; import java.util.Date; import static com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES; /** * 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.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 * * @return Gson instance */ public static final Gson getGson(final boolean serializeNulls) { return serializeNulls ? GSON : GSON_NO_NULLS; } /** * Convert object to json * * @return json string */ public static final String toJson(final Object object) { return toJson(object, true); } /** * Convert object to json * * @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 * * @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 * * @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 * * @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 * * @return instance of type */ public static final <V> V fromJson(Reader reader, Type type) { return GSON.fromJson(reader, type); } }