java - 使用 Gson 从 JSON 字符串中提取正确格式的数字

标签 java json numbers gson

我正在尝试使用 Gson 从 JSON 字符串中检索元素。我想获取正确类型的数字,但 Gson 给出的整数为 double 值。

这是我的代码:

String jsonString = "{'symbol':'WSO2','price':55.6,'volume':100}";
Object json = new Gson().fromJson(eventObject.toString(),Object.class);

如何解析 JSON 字符串以获得正确格式的数字?

谢谢!

最佳答案

JSON 不区分仅定义单个数字类型的数字类型:数字。当您可以将 100 值视为整数、...或长整型、 double 型或浮点型(具体取决于您如何解释它)时,这是一个明显的歧义。从另一个角度看更多内容请参见以下讨论:How to get value as java.lang.Object from Gson? :JSON语法摘录:

    • 字符串
    • 数字
    • 对象
    • 数组
    • 正确
    • 错误

其中数字是:

  • 数字
    • 整数
    • int frac
    • int exp
    • int frac exp

在 Gson 中,你不能通过反序列化到 java.lang.Object 来做到这一点因为 Gson 对于这种类型使用 ObjectTypeAdapter总是parses a numeric value as a double ,Java最大数JsonReader专为:

public final class ObjectTypeAdapter extends TypeAdapter<Object> {
...

    @Override public Object read(JsonReader in) throws IOException {
...
        case NUMBER:
            return in.nextDouble();
...

最安全的做法就是提取值并将其转换为 java.lang.Number (您可能会将其视为“未知”数字)并使用其方法,如 intValue() , longValue() , doubleValue()等在调用站点。

关于java - 使用 Gson 从 JSON 字符串中提取正确格式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510419/

相关文章:

java - 将数组项放入带有 2 个字符串的 hashmap 中

JavaFx:从事件处理程序访问对象

java - 在请求中提供 pdf 会导致空响应

java.io.StreamTokenizer.TT_NUMBER : Floating or Integer?

android - 如何使用 Volley 库上传图片?

javascript - 将点击信息转换为 JSON

javascript - 获取一个集中在中心的随机数

PHP 将数字加一

json - 从 URL 加载图像并将其添加到 ListView

javascript - 在 Javascript 中搜索号码