JAVA JSON相同的键:如何搜索?

时间:2018-11-21 09:10:13

标签: java json search indexing

我从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的新手,所以请求饶!

1 个答案:

答案 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”)。后者将返回一个数字对象,因此不需要进行字符串转换。