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 编号的主要内容,如果未能解决你的问题,请参考以下文章
无效的 URI:无法通过我们的自定义重写 IHttpModule 解析主机名
让 PHP 的 XMLReader 不会在无效文档中抛出 php 错误
如何构造 basicdbobject 查询以删除深度数组文档?