package com.alibaba.fastjson.parser.deserializer; import java.lang.reflect.Type; import java.util.Map; import com.alibaba.fastjson.parser.DefaultJSONParser; import com.alibaba.fastjson.parser.JSONLexer; import com.alibaba.fastjson.parser.JSONToken; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.util.FieldInfo; public class StringFieldDeserializer extends FieldDeserializer { private final ObjectDeserializer fieldValueDeserilizer; public StringFieldDeserializer(ParserConfig config, Class<?> clazz, FieldInfo fieldInfo) { super(clazz, fieldInfo); fieldValueDeserilizer = config.getDeserializer(fieldInfo); } @Override public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) { String value; final JSONLexer lexer = parser.getLexer(); if (lexer.token() == JSONToken.LITERAL_STRING) { value = lexer.stringVal(); lexer.nextToken(JSONToken.COMMA); } else { Object obj = parser.parse(); if (obj == null) { value = null; } else { value = obj.toString(); } } if (object == null) { fieldValues.put(fieldInfo.getName(), value); } else { setValue(object, value); } } public int getFastMatchToken() { return fieldValueDeserilizer.getFastMatchToken(); } }