我正在使用 Java Play Framework、MongoDB 和 Jongo 的组合作为基本 Web CRUD 应用程序的过渡。即使我的字符串不包含任何非法字符,我也会不断收到 JSON 解析异常。它实际上在语句末尾关闭大括号时失败了。以下是我的错误和代码。查询字符串只是一个字符串构建器,搜索对象是否为空或有值,如果有值则附加到字符串中。
钟戈法:
public static Iterable<OneDomain> findWithQueryString(String queryString){
return domains().find("{#}", queryString).as(OneDomain.class);
}
控制器方法:字符串生成器示例:
if(queryStringBuilder.toString().equalsIgnoreCase("")){
queryStringBuilder.append("date: {$gte : " + searchObj.dateFrom + ", $lt: " + searchObj.dateTo + "}");
}else{
queryStringBuilder.append(" , ");
queryStringBuilder.append("date: {$gte : " + searchObj.dateFrom + ", $lt: " + searchObj.dateTo + "}");
}
String queryString = queryStringBuilder.toString();
Iterable<OneDomain> filteredIterable = OneDomain.findWithQueryString(queryString);
给我这个错误:
Caused by: com.mongodb.util.JSONParseException:
{"source : Online Lists , blacklist : true , vetted : true , is : false , isNot : true"}
^
以“}”上的错误结束它。
除此之外,如果我尝试通过输入 \" 来转义字符,使其变为 \"date\",它将解析并出错,如下所示:
Caused by: com.mongodb.util.JSONParseException:
{"\"source\" : \"Online Lists\" , \"blacklist\" : true , \"vetted\" : true , \"is\" : false , \"isNot\" : true"}