package org.zbus.common.json.parser.deserializer; import java.lang.reflect.Type; import org.zbus.common.json.JSONException; import org.zbus.common.json.parser.DefaultJSONParser; import org.zbus.common.json.parser.JSONLexer; import org.zbus.common.json.parser.JSONToken; import org.zbus.common.json.util.TypeUtils; public class ClassDerializer implements ObjectDeserializer { public final static ClassDerializer instance = new ClassDerializer(); public ClassDerializer(){ } @SuppressWarnings("unchecked") public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) { JSONLexer lexer = parser.getLexer(); if (lexer.token() == JSONToken.NULL) { lexer.nextToken(); return null; } if (lexer.token() != JSONToken.LITERAL_STRING) { throw new JSONException("expect className"); } String className = lexer.stringVal(); lexer.nextToken(JSONToken.COMMA); return (T) TypeUtils.loadClass(className); } public int getFastMatchToken() { return JSONToken.LITERAL_STRING; } }