java - JsonElement 是整数还是 float ?

标签 java gson

是否可以确定是否是 GSON JsonElement实例是整数还是浮点数?

我能够确定它是否是一个数字:

JsonElement value = ...
boolean isNumber = value.getAsJsonPrimitive().isNumber();

但是如何确定它是整数还是浮点数,以便我随后可以使用正确的转换方法?任何一个
float f = value.getAsJsonPrimitive().getAsFloat();

或者
int i = value.getAsJsonPrimitive().getAsInt();

编辑:另一个问题可能会回答为什么这可能不会在 GSON 中实现,但这个问题绝对不是它的重复。

最佳答案

到目前为止,我发现的唯一方法是在字符串上使用正则表达式:

if (value.getAsJsonPrimitive().isNumber()) {
    String num = value.getAsString();
    boolean isFloat = num.matches("[-+]?[0-9]*\\.[0-9]+");
    if (isFloat)
        System.out.println("FLOAT");
    else
        System.out.println("INTEGER");
}

这正确地将 123 确定为整数,并将 123.45 和 123.0 确定为浮点数。

关于java - JsonElement 是整数还是 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283825/

相关文章:

java - GSON - 特定情况下的自定义序列化程序

java - Gson解析为包含JsonArray的对象

java - JMenuItem 和 ENTER 键释放

java - Hadoop MapReduce - Euler 的 Totient/Sum of Totient(和其他数学运算)

java - Gson - 任意对象

java - 使用 gson 在 Java 中序列化千兆字节的 python 对象

java - 我应该如何将这个变量 E 传递给这个类?自定义序列化器 GSON

java - 如何在java中检索字符串的特定部分

java - 主题,用户和委托(delegate)人之间的含义和区别是什么?

java - 计算大整数 Java 的幂期间的无限循环