我需要在String属性中读取整数和双精度,但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
。
那么以某种方式解决这个问题是否可能?
答案 0 :(得分:0)
public class youClass(){
private int i;
}
然后:
Gson gson = new Gson();
yourClass = gson.fromJson(jsonText , yourClass);
yourClass.getI();
希望有用
答案 1 :(得分:0)
您可以做的是从 JSON
获取字符串的值创建检查以便知道值 double 或只是整数,使用下面的方法。
尝试以下代码:
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]);
}
}
<强>输出:强>
这是一个inte值:1
这是一个双重值:1.0
这是双重值:1.2
这是双重值:3.5
这是一个双重值:2.5