繁体   English   中英

GSON将整数视为双精度

[英]GSON treats integer as double

我需要读取String属性中的integer和double,但GSON将每个int都视为double(是的,我知道这是JSON标准)。

例如,我上课:

public class MyObject {
    String value;
}

在某些情况下,我有此JSON- {"value": 1} ,有时- {"value": 2.4}

我必须按原样显示此值,但第一个值将被读取为1.0

我尝试使用JsonDeserializerTypeAdapter ,它们都有类似getAsString方法,并且它们都首先将值转换为double值,然后将其返回。

方法在JsonPrimitive外观:

@Override
public String getAsString() {
    if (isNumber()) {
        return getAsNumber().toString();
    } else if (isBoolean()) {
        return getAsBooleanWrapper().toString();
    } else {
        return (String) value;
    }
}

您可以在此处查看isNumber检查。

那么以某种方式解决这个问题是可能的吗?

public class youClass(){
  private int i;
}

接着 :

Gson gson = new Gson();
yourClass = gson.fromJson(jsonText , yourClass);
yourClass.getI();

希望有用

您可以做的是,可以从JSON中获取String 形式的值

并使用以下一种棘手的方法创建检查以知道该值是双精度还是整数

试试下面的代码:

   String stringArr[] = {"1", "1.0",  "1.2", "3.5", "2.5"};
        for(int i=0;i<stringArr.length;i++){
              if(stringArr[i].equals(String.valueOf(Double.parseDouble(stringArr[i])))){
                    System.out.println("It's a double value : "+stringArr[i]);
              }else{
                    System.out.println("It's a inte value : "+stringArr[i]);
              }
        }

输出:

这是一个整数值:1

这是一个双精度值:1.0

这是一个双倍值:1.2

这是两倍的值:3.5

这是两倍的值:2.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM