/src/main/java/com/alibaba/fastjson/parser/deserializer/LongFieldDeserializer.java
https://bitbucket.org/xiejuntao/xdesktop · Java · 62 lines · 48 code · 13 blank · 1 comment · 16 complexity · d0a4e4659cc88571bf51bdcc075f233b 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 LongFieldDeserializer extends FieldDeserializer {
- private final ObjectDeserializer fieldValueDeserilizer;
- public LongFieldDeserializer(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo){
- super(clazz, fieldInfo);
- fieldValueDeserilizer = mapping.getDeserializer(fieldInfo);
- }
- @Override
- public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {
- Long value;
-
- final JSONLexer lexer = parser.getLexer();
- if (lexer.token() == JSONToken.LITERAL_INT) {
- long val = lexer.longValue();
- 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.castToLong(obj);
- }
-
- if (value == null && getFieldClass() == long.class) {
- // skip
- return;
- }
-
- if (object == null) {
- fieldValues.put(fieldInfo.getName(), value);
- } else {
- setValue(object, value);
- }
- }
- public int getFastMatchToken() {
- return fieldValueDeserilizer.getFastMatchToken();
- }
- }