BasicDBObject 解析抛出无效的 json 编号

Posted

技术标签:

【中文标题】BasicDBObject 解析抛出无效的 json 编号【英文标题】:BasicDBObject parse throwing invalid json number 【发布时间】:2019-05-22 18:20:52 【问题描述】:

我正在使用此代码来创建聚合查询,但我得到了 JsonParseException : invalid json number

Map<String, Object> map = new LinkedHashMap<>();
map.put("if",  BasicDBObject.parse("'$gte':['$subtract':
['$ifNull':['$acceptedDate', " + new Date() + "],'$lastVisit'],1296000000]"));

是否有其他方法可以映射此查询?

【问题讨论】:

【参考方案1】:

BasicDBObject 解析接受json extended version。要传递日期,您必须从纪元开始以毫秒为单位传递时间。

类似

BasicDBObject.parse("
 '$gte':[
   '$subtract':[
     '$ifNull':['$acceptedDate', '$date': " + System.currentTimeMillis() + "],
     '$lastVisit'
   ],
   1296000000
 ]"
)

【讨论】:

嘿 Veeram,这并没有引发错误,非常感谢。但我确实有一个问题。我犯了一个错误,我的acceptedDate 实际上是一个像"acceptedDate" : [ "value" : ISODate(a date) ] 这样的数组,而lastVisit 日期是一个常规字段"lastVisit" : ISODate(a date)。问题是,acceptedDate 可能存在也可能不存在。 :(

以上是关于BasicDBObject 解析抛出无效的 json 编号的主要内容,如果未能解决你的问题,请参考以下文章

VS调试:字符串中的字符无效

无效的 URI:无法通过我们的自定义重写 IHttpModule 解析主机名

让 PHP 的 XMLReader 不会在无效文档中抛出 php 错误

如何构造 basicdbobject 查询以删除深度数组文档?

由于添加多个条件 GridFSDBFile 查询时 com.mongodb.BasicDBObject 异常的限制

BigQuery:无效日期错误