/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

  1. package com.alibaba.fastjson.parser.deserializer;
  2. import java.lang.reflect.Type;
  3. import com.alibaba.fastjson.parser.DefaultJSONParser;
  4. import com.alibaba.fastjson.parser.JSONLexer;
  5. import com.alibaba.fastjson.parser.JSONToken;
  6. import com.alibaba.fastjson.util.TypeUtils;
  7. public class FloatDeserializer implements ObjectDeserializer {
  8. public final static FloatDeserializer instance = new FloatDeserializer();
  9. @SuppressWarnings("unchecked")
  10. public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
  11. return (T) deserialze(parser);
  12. }
  13. @SuppressWarnings("unchecked")
  14. public static <T> T deserialze(DefaultJSONParser parser) {
  15. final JSONLexer lexer = parser.getLexer();
  16. if (lexer.token() == JSONToken.LITERAL_INT) {
  17. String val = lexer.numberString();
  18. lexer.nextToken(JSONToken.COMMA);
  19. return (T) Float.valueOf(Float.parseFloat(val));
  20. }
  21. if (lexer.token() == JSONToken.LITERAL_FLOAT) {
  22. float val = lexer.floatValue();
  23. lexer.nextToken(JSONToken.COMMA);
  24. return (T) Float.valueOf(val);
  25. }
  26. Object value = parser.parse();
  27. if (value == null) {
  28. return null;
  29. }
  30. return (T) TypeUtils.castToFloat(value);
  31. }
  32. public int getFastMatchToken() {
  33. return JSONToken.LITERAL_INT;
  34. }
  35. }