Java:解析Long throws错误

时间:2015-03-03 13:53:58

标签: java mongodb casting

我正在使用MongoDb。我有一个名为' counter'的集合。我正在尝试检索字段“seq'”的值,该值在MongoDb中存储为double。

首先是' seq'字段增加1,工作正常。如果我在将它转换为字符串后最终打印seq的值,它可以正常工作。它返回一个字符串值。

但是当我尝试使用Long.parseLong()或Long.valueOf()函数解析String值(例如1.0到Long)时,它会抛出错误。

  

SEVERE:无法将RuntimeException映射到响应,   重新抛出到HTTP容器java.lang.NumberFormatException:For   输入字符串:" 47.0"

public long getNextSeq(){
        DBCollection coll = getCollection(getDb(DB_NAME), "counters");
        coll.update(new BasicDBObject().append("_id","blogId"), new BasicDBObject().append("$inc",new BasicDBObject("seq",1)));
        DBObject seqObj = coll.findOne();
        String seqStr = seqObj.get("seq").toString();
        long seq = Long.valueOf(seqStr);
        return seq;
}

所以我想知道为什么我不能将47.0转换为long,以及解决方案是什么。

注意: seqObj.get("seq")会产生BSONObject。 (MongoDb查询)

1 个答案:

答案 0 :(得分:1)

我通常会做以下事情:

long l = ((Number) seqObj.get("seq")).longValue();