gson 使用JSON确定JsonPrimitve是BigDecimal还是整数

xriantvc  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(190)

我尝试识别JsonPrimitve中的值是BigDecimal、Integer、Long、int还是double,但没有获得确切的特定类型。

JsonPrimitive jpri = jsonElement.getAsJsonPrimitive();
if(jpri.isString()){
    String str = jpri.getAsString();
} else if(jpri.isNumber()) {
    //Here I want to know at the runtime what type of value jpri holds. 
    //I tried below but no luck
    Number number = jpri.getAsNumber();
    if(number instanceof Integer)
        Integer int = jpri.getAsInteger();
    else if(number instanceof BigDecimal)
        Integer int = jpri.getAsBigDecimal();
}
uyhoqukh

uyhoqukh1#

您可以尝试以下两种方法
1)的

Number number = (Number) jpri.value;
  if (number instanceof Integer){

  }else if(number instanceof BigDecimal){

   }
else if (jpri.isNumber()) {
  Number number = jpri.getAsNumber();
  double numberValue= number.doubleValue();
  if ((int) numberValue== numberValue) {
    return Integer.valueOf((int) numberValue);
  } else if ((long) numberValue== numberValue) {
    return Long.valueOf((long) numberValue);
  } else if ((float) numberValue== numberValue) {
    return Float.valueOf((float) numberValue);
  } else {
    return Double.valueOf((double) numberValue);
  }

相关问题