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

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

package com.jd.blockchain.web.serializes;

import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.util.Map;

/**
 * 字节数组(JDChain自定义序列化处理方式)对应JSON的反序列化处理
 *
 * @author shaozhuguang
 */
public class ByteArrayJsonDeserializer extends JavaBeanDeserializer {

    /**
     * 可扩展的反序列化接口
     */
    private ExtendJsonDeserializer jsonDeserializer;

    private ByteArrayJsonDeserializer(Class clazz, ExtendJsonDeserializer jsonDeserializer) {
        super(ParserConfig.global, clazz);
        if (jsonDeserializer == null) {
            throw new IllegalArgumentException("ExtendJsonDeserializer is NULL !!!");
        }
        this.jsonDeserializer = jsonDeserializer;
    }

    public static ByteArrayJsonDeserializer create(Class clazz, ExtendJsonDeserializer jsonDeserializer) {
        return new ByteArrayJsonDeserializer(clazz, jsonDeserializer);
    }

    @SuppressWarnings("unchecked")
    @Override
    public  T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
        if (type instanceof Class) {
            return jsonDeserializer.deserialze(parser, type, fieldName);
        }
        return (T) parser.parse(fieldName);
    }

    @Override
    public Object createInstance(Map map, ParserConfig config) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        if (map == null || map.isEmpty()) {
            return null;
        }
        return jsonDeserializer.createInstance(map, config);
    }

    @Override
    public int getFastMatchToken() {
        return JSONToken.LBRACE;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy