我从API获得JSON响应,其格式如下:
{
"timestamp":1542790613,
"price":4608.4564197580685
},
{
"timestamp":1542790614,
"price":4608.456348092037
},
{
"timestamp":1542790615,
"price":4608.358785472172
},
{
"timestamp":1542790616,
"price":4608.420295035769
},
{
"timestamp":1542790617,
"price":4608.420058274378
}
现在,我已经转换为字符串(无法在此处粘贴代码,公司政策),但是时间戳显示为1.54278925E9
,而不是显示所有数字。
我想做的是,从其他地方获取一个timestamp(unixtime)参数,在JSON中搜索它并返回该时间戳的价格。
我是Java的新手,所以请求饶!
答案 0 :(得分:1)
json中的时间戳值是自纪元以来的毫秒数。看起来您正在读入并以long结尾,然后转换为字符串,从而获得该数字的指数表达式。跳过字符串转换,使用long值创建一个Instant对象。 Instant类知道如何处理。
Instant timestamp = Instant.ofEpochMilli(timestampValueFromJson);
请参见https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html
更新:如果使用的是org.json进行解析,则调用jsonobj.getLong(“ timestamp”)而不是隐式的jsonobj.get(“ timestamp”)。后者将返回一个数字对象,因此不需要进行字符串转换。