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

com.bazaarvoice.jolt.JsonUtil Maven / Gradle / Ivy

/*
 * Copyright 2013 Bazaarvoice, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bazaarvoice.jolt;

import com.fasterxml.jackson.core.type.TypeReference;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * Utility methods for getting JSON content loaded from
 *  the filesystem, the classpath, or in memory Strings.
 *
 * Also has methods to serialize Java object to JSON strings.
 *
 * Implementations of this interface can specify their own
 * Jackson ObjectMapper so that Domain specific Java Objects
 * can successfully be serialized and de-serialized.
 */
public interface JsonUtil {

    // DE-SERIALIZATION
    Object jsonToObject( String json );
    Object jsonToObject( String json , String charset );
    Object jsonToObject( InputStream in );

    Map jsonToMap( String json );
    Map jsonToMap( String json, String charset );
    Map jsonToMap( InputStream in );

    List jsonToList( String json);
    List jsonToList( String json , String charset );
    List jsonToList( InputStream in );

    Object           filepathToObject( String filePath );
    Map filepathToMap( String filePath );
    List       filepathToList( String filePath );

    Object           classpathToObject( String classPath );
    Map classpathToMap( String classPath );
    List       classpathToList( String classPath );

    /**
     * Use the stringToType method instead.
     */
    @Deprecated
     T jsonTo(    String json, TypeReference typeRef );

    /**
     * Use the streamToType method instead.
     */
    @Deprecated
     T jsonTo( InputStream in, TypeReference typeRef );

     T stringToType   (String json, TypeReference typeRef );
     T stringToType   (String json, Class aClass );

     T classpathToType(String classPath, TypeReference typeRef );
     T classpathToType(String classPath, Class aClass );

     T fileToType     (String filePath, TypeReference typeRef );
     T fileToType     (String filePath, Class aClass );

     T streamToType   ( InputStream in, TypeReference typeRef );
     T streamToType   ( InputStream in, Class aClass );

    String toJsonString( Object obj );
    String toPrettyJsonString( Object obj );

    /**
     * Makes a deep copy of a Map object by converting it to a String and then
     * back onto stock JSON objects.
     *
     * Leverages Serialization
     *
     * @param obj object tree to copy
     * @return deep copy of the incoming obj
     */
    Object cloneJson( Object obj );
}