[英]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.