PageRenderTime 42ms CodeModel.GetById 19ms app.highlight 14ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/java/com/alibaba/fastjson/parser/deserializer/FloatDeserializer.java

https://bitbucket.org/xiejuntao/xdesktop
Java | 46 lines | 35 code | 11 blank | 0 comment | 6 complexity | 73b6ac75d440618864d4e29d83983194 MD5 | raw file
 1package com.alibaba.fastjson.parser.deserializer;
 2
 3import java.lang.reflect.Type;
 4
 5import com.alibaba.fastjson.parser.DefaultJSONParser;
 6import com.alibaba.fastjson.parser.JSONLexer;
 7import com.alibaba.fastjson.parser.JSONToken;
 8import com.alibaba.fastjson.util.TypeUtils;
 9
10public class FloatDeserializer implements ObjectDeserializer {
11
12    public final static FloatDeserializer instance = new FloatDeserializer();
13
14    @SuppressWarnings("unchecked")
15    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
16        return (T) deserialze(parser);
17    }
18
19    @SuppressWarnings("unchecked")
20    public static <T> T deserialze(DefaultJSONParser parser) {
21        final JSONLexer lexer = parser.getLexer();
22        if (lexer.token() == JSONToken.LITERAL_INT) {
23            String val = lexer.numberString();
24            lexer.nextToken(JSONToken.COMMA);
25            return (T) Float.valueOf(Float.parseFloat(val));
26        }
27
28        if (lexer.token() == JSONToken.LITERAL_FLOAT) {
29            float val = lexer.floatValue();
30            lexer.nextToken(JSONToken.COMMA);
31            return (T) Float.valueOf(val);
32        }
33
34        Object value = parser.parse();
35
36        if (value == null) {
37            return null;
38        }
39
40        return (T) TypeUtils.castToFloat(value);
41    }
42
43    public int getFastMatchToken() {
44        return JSONToken.LITERAL_INT;
45    }
46}