GSON将整数视为double

时间:2017-09-19 11:58:24

标签: java android json gson

我需要在String属性中读取整数和双精度,但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

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

2 个答案:

答案 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