package com.bonus.hn.bearing.capacity.backstage.manager.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.List;
/**
 * @author bonus
 */
public interface JsonHelper {

	public String jsonSerialize(Object value);

	public <T> T jsonDeserialize(String value, Class<?> tClass);

	/**
	 * 将任意bean转换成json字符串
	 * fast json
	 * @param bean
	 * @param <T>
	 * @return
	 */
	public static <T> String beanToJsonStr(T bean) {
		String jsonStr = JSON.toJSONString(bean);
		return jsonStr;
	}

	/**
	 * 把一个json字符串转换成bean对象
	 * fast json
	 * @param str
	 * @param <T>
	 * @return
	 */
	public static <T> T jsonStrToBean(String str, Class<T> clazz) {
		T bean = JSON.parseObject(str, clazz);
		return bean;
	}

	/**
	 * 把一个jsonObj转换成bean对象
	 * fast json
	 * @param jsonObj
	 * @param <T>
	 * @return
	 */
	public static <T> T jsonObjToBean(JSONObject jsonObj, Class<T> clazz) {
		String s = jsonObj.toJSONString();
		T bean = JSON.parseObject(s, clazz);
		return bean;
	}

	/**
	 * 把一个bean对象转换成jsonObj
	 * fast json
	 * @param bean
	 * @param <T>
	 * @return
	 */
	public static <T> JSONObject beanToJsonObj(T bean) {
		Object o = JSON.toJSON(bean);
		return (JSONObject) o;
	}

	/**
	 * 把一个jsonStr转换成jsonObj
	 * fast json
	 * @param str
	 * @return
	 */
	public static JSONObject jsonStrToJsonObj(String str) {
		Object o = JSON.parseObject(str);
		return (JSONObject) o;
	}

	/**
	 * 把一个jsonObj转换成jsonStr
	 * fast json
	 * @param jsonObj
	 * @return
	 */
	public static String jsonObjToJsonStr(JSONObject jsonObj) {
		String s = jsonObj.toJSONString();
		return s;
	}


	/**
	 * 把一个beanList对象转换成jsonArrStr
	 * fast json
	 * @param beanList
	 * @param <T>
	 * @return
	 */
	public static <T> JSONArray beanListToJsonArrStr(List<T> beanList) {
		Object o = JSON.toJSON(beanList);
		return (JSONArray) o;
	}

	/**
	 * 把一个jsonArrStr转换成beanList对象
	 * fast json
	 * @param jsonArrStr
	 * @param <T>
	 * @return
	 */
	public static <T> List<T> jsonArrStrToBeanList(String jsonArrStr,Class<T> clazz) {
		List<T> ts = JSON.parseArray(jsonArrStr, clazz);
		return ts;
	}


	/**
	 * 把一个JsonArr转换成JsonArrStr
	 * fast json
	 * @param jsonArr
	 * @return
	 */
	public static String jsonArrToJsonArrStr(JSONArray jsonArr) {
		String s = JSON.toJSONString(jsonArr);
		return s;
	}


	/**
	 * 把一个JsonArrStr文本转换成JsonArr
	 * fast json
	 * @param jsonArrStr
	 * @return
	 */
	public static JSONArray jsonArrStrToJsonArr(String jsonArrStr) {
		Object o = JSON.parse(jsonArrStr);
		return (JSONArray) o;
	}


	/**
	 * 把一个JsonArr转换成beanList
	 * fast json
	 * @param jsonArr
	 * @return
	 */
	public static <T> List<T> jsonArrToBeanList(JSONArray jsonArr,Class<T> clazz) {
		String s = JSON.toJSONString(jsonArr);
		List<T> ts = JSON.parseArray(s, clazz);
		return ts;
	}


	/**
	 * 把一个beanList文本转换成JsonArr
	 * fast json
	 * @param beanList
	 * @return
	 */
	public static <T> JSONArray beanListToJsonArr(List<T> beanList) {
		Object o = JSON.toJSON(beanList);
		return (JSONArray) o;
	}
}
