package org.iot.mqtt.test.utils;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;


public class SerializeHelper {

    private static final Logger log = LoggerFactory.getLogger(SerializeHelper.class);

    public static <T> byte[] serialize(T obj){
        if(obj instanceof String){
            return ((String) obj).getBytes();
        }
        return JSONObject.toJSONBytes(obj);
    }

    @SuppressWarnings("unchecked")
	public static <T> T deserialize(byte[] bytes,Class<T> clazz){
        try{
            if(clazz == String.class){
                return (T) new String(bytes);
            }
            return JSONObject.parseObject(bytes,clazz);
        }catch(Exception ex){
            log.warn("Deserialize failure,cause={}",ex);
        }
        return null;
    }

    public static <T> List<T> deserializeList(byte[] bytes, Class<T> clazz){
        try{
            String json = JSONObject.toJSONString(bytes);
            List<T> result = JSONObject.parseArray(json,clazz);
            return result;
        }catch (Exception ex){
            log.warn("Deserialize failure,cause={}",ex);
        }
        return null;
    }

}