Java GSON/如何解析数字

Java GSON/如何解析数字,java,json,gson,Java,Json,Gson,我想用GSON解析JSON文档。然而,我对数字有一个问题 我的模式只是对所有标记进行迭代。。。这是首先偷看,然后根据switch语句中的TokenType进行操作。以下代码段中的读取器是JsonReader 我如何知道它是一个整数/长还是一个十进制值,可能只适合一个大十进制?只需调用nextString,然后尝试用BigDecimal解析字符串,依此类推?在中,数字始终是形式的浮点数字 ['-']位['.'位]['e'符号位] 所以基本上是一个双精度,除了NaN和±无穷大 对于一般代码,请使用n

我想用GSON解析JSON文档。然而,我对数字有一个问题

我的模式只是对所有标记进行迭代。。。这是首先偷看,然后根据switch语句中的TokenType进行操作。以下代码段中的读取器是JsonReader

我如何知道它是一个整数/长还是一个十进制值,可能只适合一个大十进制?只需调用nextString,然后尝试用BigDecimal解析字符串,依此类推?

在中,数字始终是形式的浮点数字 ['-']位['.'位]['e'符号位]

所以基本上是一个双精度,除了NaN和±无穷大

对于一般代码,请使用nextDouble,除非您希望使用非常大的数字,其中需要使用BigDecimal


nextInt和nextLong方法是帮助方法,当您知道数字应该是一个整数值时使用。

是的,我正在开发一个开源的临时存储系统,在这个系统中,对于新的二进制和内存JSON格式,我还可以将数字表示为整数、长、浮点、双精度或甚至BigInteger/BigDecimal。对于导入JSON文档,最好获得最合适的数字类型:-@Johannes然后使用BigDecimal,然后使用精度和比例,或者使用longValueExact/intValueExact来确定值是否适合双精度/long/int/BigInteger。首先将值作为字符串获取,然后作为BigDecimal解析?我期望的值是一个数字,这个抽象类,在内部,我正在检查精确类型的实例,这有点难看,但是是的。
while (reader.hasNext() && !endReached) {
  final var nextToken = reader.peek();

  switch (nextToken) {
    case NUMBER:
      // reader.nextInt(), reader.nextLong(), reader.nextDouble()
      break;
    ...
  }
}