[英]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
。
我尝试使用JsonDeserializer
和TypeAdapter
,它们都有类似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.