基本的な Web CRUD アプリの間で、Java と Scala ではなく Java を使用する Play フレームワーク、MongoDB と Jongo を組み合わせて使用しています。文字列に不正な文字が含まれていないにもかかわらず、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"}
実際にこれを行うことはできますか、それともJavaが挿入されているため、引用符は文字列全体を囲んでいるため、単一のJSONフィールドとクエリ全体として読み取ろうとしていますか?