繁体   English   中英

解析包含Long值的JSON字符串时出现NumberFormatException

[英]NumberFormatException while parsing a JSON String containing Long value

我有一个日志文件,每个句子都包含一个JSON对象,如下所示:-

{"action": "follow", "target": "FabianoCaruana", "timestamp": 1487149397523, "user": "GMHikaru"}
{"action": "tweet", "id": 16606634614844517897, "message": "woop #ruby", "timestamp": 1487149445603, "user": "hugopeixoto"}
{"action": "retweet", "target_id": 16606634614844517897, "timestamp": 1487149446020, "user": "spambot"}
{"action": "retweet", "target_id": 16606634614844517897, "timestamp": 1487149446592, "user": "noob_saibot"}
{"action": "tweet", "id": 14936153188153171323, "message": "woop #vim", "timestamp": 1487149463067, "user": "eevee"}
{"action": "follow", "target": "eevee", "timestamp": 1487149466209, "user": "pkoch"}
{"action": "tweet", "id": 1801829421162967878, "message": "woop #processes", "timestamp": 1487149468671, "user": "r00k"}
{"action": "retweet", "target_id": 1801829421162967878, "timestamp": 1487149469555, "user": "noob_saibot"}
{"action": "follow", "target": "r00k", "timestamp": 1487149472418, "user": "pkoch"}

我正在使用JSON解析器读取每一行并将其存储在String中以进行进一步处理

String line = {"action": "tweet", 
               "id": 16606634614844517897, 
               "message": "woop #ruby", 
               "timestamp": 1487149445603, 
               "user": "hugopeixoto"};

当使用“ json-simple-1.1.1.jar”解析上述String时,出现错误:-

java.lang.NumberFormatException: For input string: "16606634614844517897"

解析以上JSON字符串的代码:-

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(line);
String name =(String) json.get("user");

我想打印上述JSON字符串中存在的“用户”名称。

显然,id是Long格式,因此例外。

您能否建议我一种解决方法,以消除上述异常。 我尝试了所有组合,但是没有用。

显然,id是长格式

不,很抱歉,最大Long值如下:

9223372036854775807 <-- has a length of 19

而你的

16606634614844517897 <- has a length of 20

我看到了两种简单的解决方案来解决您的问题。

如果id仅用于唯一标识(在这里可能就是这种情况),那么您应该使用String代替吗?

如果您需要使用id并比较其数值或对其执行数值操作,我对此表示怀疑,您仍然可以使用如下所示的BigInteger

new BigInteger("16606634614844517897");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM