/src/main/java/com/alibaba/fastjson/parser/deserializer/IntegerFieldDeserializer.java
Java | 57 lines | 46 code | 10 blank | 1 comment | 16 complexity | 668b1421a05be669a5d00e82472f9e3e MD5 | raw file
- 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;
- import com.alibaba.fastjson.util.TypeUtils;
- public class IntegerFieldDeserializer extends FieldDeserializer {
- public IntegerFieldDeserializer(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo){
- super(clazz, fieldInfo);
- }
- @Override
- public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {
- Integer value;
- final JSONLexer lexer = parser.getLexer();
- if (lexer.token() == JSONToken.LITERAL_INT) {
- int val = lexer.intValue();
- lexer.nextToken(JSONToken.COMMA);
- if (object == null) {
- fieldValues.put(fieldInfo.getName(), val);
- } else {
- setValue(object, val);
- }
- return;
- } else if (lexer.token() == JSONToken.NULL) {
- value = null;
- lexer.nextToken(JSONToken.COMMA);
- } else {
- Object obj = parser.parse();
- value = TypeUtils.castToInt(obj);
- }
- if (value == null && getFieldClass() == int.class) {
- // skip
- return;
- }
- if (object == null) {
- fieldValues.put(fieldInfo.getName(), value);
- } else {
- setValue(object, value);
- }
- }
- public int getFastMatchToken() {
- return JSONToken.LITERAL_INT;
- }
- }