gpt4 book ai didi

java - 为什么 JSONParser 总是返回一个 double 值?

转载 作者:行者123 更新时间:2023-11-29 04:45:11 25 4
gpt4 key购买 nike

我目前正在尝试使用api上codename的JSONParser

在后端有一个长值发送,但在我的应用程序中有一个解析的 double 值。

我知道有一个方法说 setUseLongs(boolean) 并且我已经将该字段设置为 true。如果我实例化解析器并调用 System.out.println(p.isUseLong),它会打印 true

但是,该字段仍被解析为 double 值,尽管它是作为长整型值发送的。

我在这里错过了什么?

代码如下:

@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser.setUseLongs(true);
JSONParser p = new JSONParser();
System.out.println(p.isUseLongs()); //true and a Warning to use static methods static...
Map<String,Object> data = p.parseJSON(new InputStreamReader(input));
System.out.println(data); //long value already printed as double
}

编辑

这是 JSON 字符串(在最后一行打印,解析器输出):

[
{createdByUserId=1364.0, //should be int
createdAtDate=1.464330197735E12, //should be long
deleted=false, //boolean, correct
updatedAtDate=1.464330197735E12, //long
name=Hallo1, //String, correct
...
]

最佳答案

//Assuming all elements are double
createdByUserId.intvalue();
createdAtDate.longValue();

JSONParser 有一个 setUseLongs方法,它将使用 long 对象作为 long 值,将 double 对象用于 double 值。为了兼容性和代号一中的不便,默认情况下这是关闭的。

目前 Codename One 不包含 Number 类,该类是所有数值的基类,因此通常在标准 Java 中您会执行如下操作:

long l = ((Number)val).longValue();

这更有意义,因为您不依赖解析器返回的内容。不幸的是,目前这不受支持,但我添加了一个问题来解决这个问题 here .

关于java - 为什么 JSONParser 总是返回一个 double 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com