/src/main/java/com/alibaba/fastjson/parser/deserializer/FloatDeserializer.java
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}