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

com.github.fosin.cdp.util.JSONUtil Maven / Gradle / Ivy

package com.github.fosin.cdp.util;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.text.SimpleDateFormat;

/**
 * JSONUtil class.
 *
 * @author 28860823
 * @version $Id: $
 */
public class JSONUtil {
	private static ObjectMapper mapper =  new ObjectMapper();
	
	static{
		mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
		mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);

		mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
		mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
		mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

	}
	
	/**
	 * parse
	 *
	 * @param value a {@link java.lang.String} object.
	 * @param clz a {@link java.lang.Class} object.
	 * @param  a T object.
	 * @return a T object.
	 */
	public static  T parse(String value, Class clz){
		if (StringUtils.isEmpty(value)) {
			return null;
		}
		try {
			return mapper.readValue(value, clz);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * parse
	 *
	 * @param bytes an array of byte.
	 * @param clz a {@link java.lang.Class} object.
	 * @param  a T object.
	 * @return a T object.
	 */
	public static  T parse(byte[] bytes,Class clz){
		try {
			return mapper.readValue(bytes, clz);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	
	/**
	 * parse
	 *
	 * @param ins a {@link java.io.InputStream} object.
	 * @param clz a {@link java.lang.Class} object.
	 * @param  a T object.
	 * @return a T object.
	 */
	public static  T parse(InputStream ins, Class clz){
		try {
			return mapper.readValue(ins, clz);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	
	/**
	 * parse
	 *
	 * @param reader a {@link java.io.Reader} object.
	 * @param clz a {@link java.lang.Class} object.
	 * @param  a T object.
	 * @return a T object.
	 */
	public static  T  parse(Reader reader, Class clz){
		try {
			return mapper.readValue(reader, clz);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * createCollectionType
	 *
	 * @param collectionClass a {@link java.lang.Class} object.
	 * @param elementClasses a {@link java.lang.Class} object.
	 * @return a {@link com.fasterxml.jackson.databind.JavaType} object.
	 */
	public static JavaType createCollectionType(Class collectionClass, Class... elementClasses) {
		return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
	}
	
	
	/**
	 * parse
	 *
	 * @param value a {@link java.lang.String} object.
	 * @param javaType a {@link com.fasterxml.jackson.databind.JavaType} object.
	 * @param  a T object.
	 * @return a T object.
	 */
	@SuppressWarnings("unchecked")
	public static  T parse(String value, JavaType javaType) {
		if (StringUtils.isEmpty(value)) {
			return null;
		}

		try {
			return (T) mapper.readValue(value, javaType);
		}
		catch (IOException e) {
			throw new IllegalStateException(e);
		}
	}
	
	/**
	 * update
	 *
	 * @param value a {@link java.lang.String} object.
	 * @param object a T object.
	 * @param  a T object.
	 * @return a T object.
	 */
	@SuppressWarnings("unchecked")
	public static  T update(String value, T object) {
		try {
			return (T) mapper.readerForUpdating(object).readValue(value);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * writeValueAsString
	 *
	 * @param o a {@link java.lang.Object} object.
	 * @return a {@link java.lang.String} object.
	 */
	public static String writeValueAsString(Object o){
		try {
			return mapper.writeValueAsString(o);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * write
	 *
	 * @param outs a {@link java.io.OutputStream} object.
	 * @param o a {@link java.lang.Object} object.
	 */
	public static void write(OutputStream outs, Object o){
		try {
			mapper.writeValue(outs,o);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * write
	 *
	 * @param writer a {@link java.io.Writer} object.
	 * @param o a {@link java.lang.Object} object.
	 */
	public static void write(Writer writer, Object o){
		try {
			mapper.writeValue(writer,o);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * toString
	 *
	 * @param o a {@link java.lang.Object} object.
	 * @return a {@link java.lang.String} object.
	 */
	public static String toString(Object o){
		try {
			return mapper.writeValueAsString(o);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}
	
	/**
	 * toBytes
	 *
	 * @param o a {@link java.lang.Object} object.
	 * @return an array of byte.
	 */
	public static byte[] toBytes(Object o){
		try {
			return mapper.writeValueAsBytes(o);
		} 
		catch (Exception e) {
			throw new IllegalStateException(e);
		} 
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy