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

com.jd.blockchain.web.serializes.ByteArrayJsonSerializer Maven / Gradle / Ivy

package com.jd.blockchain.web.serializes;

import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;

import java.lang.reflect.Type;

/**
 * 字节数组(JDChain自定义序列化框架)对象JSON序列化处理
 *
 * @author shaozhuguang
 *
 */
public class ByteArrayJsonSerializer implements ObjectSerializer {

    private Class clazz;

    /**
     * 可扩展JSON序列化处理
     */
    private ExtendJsonSerializer jsonSerializer;

    private ByteArrayJsonSerializer(Class clazz, ExtendJsonSerializer jsonSerializer) {
        this.clazz = clazz;
        if (jsonSerializer == null) {
            throw new IllegalArgumentException("ExtendJsonSerializer is NULL !!!");
        }
        this.jsonSerializer = jsonSerializer;
    }

    public static ByteArrayJsonSerializer create(Class clazz, ExtendJsonSerializer jsonSerializer) {
        return new ByteArrayJsonSerializer(clazz, jsonSerializer);
    }

    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) {
        // 有具体序列化函数自行判断
//        if (object.getClass() != clazz) {
//            // 判断是否是代理类
//            if (object instanceof Proxy && clazz.isInterface()) {
//                // 代理类需要获取所有接口,判断是否具有该接口的实现
//                Class[] allIntfs = object.getClass().getInterfaces();
//                if (allIntfs != null && allIntfs.length > 0) {
//                    List> allIntfList = Arrays.asList(allIntfs);
//                    if (allIntfList.contains(clazz)) {
//                        jsonSerializer.write(serializer, object, fieldName, fieldType, features);
//                        return;
//                    }
//                }
//            }
//            serializer.writeNull();
//            return;
//        }
        jsonSerializer.write(clazz, serializer, object, fieldName, fieldType, features);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy