信頼できる JSON 文字列バリデーター (文字列を取り込んで、それが有効な JSON かどうかをチェックするメソッド) に助けが必要です。例: 私が合格した{"color":"red"}
場合、または{"amount":15}
それは合格しますが、そうで"My invalid json"
はないようなものです。要するに、www.jsonlint.com バリデータと同じくらい信頼できるものが必要です。ところで-Javaオブジェクトへのデシリアライズには興味がありません。それは私の要件ではないからです。任意の文字列を受け取る場合は、有効な JSON 形式であることを検証するだけです。
私はすでにこのフォーラムで、Java JSON 文字列の検証に関する主題に関するいくつかの投稿を調査しました。
私がこれまでに行ったこと:
私はこれらのクラスを使用してみました:org.json.JSONObject
そしてorg.json.JSONArray
、次の方法で:
private static boolean isValidJSONStringObject(String requestBody){
try {
new JSONObject(requestBody);
} catch (JSONException jsonEx) {
return false;
}
return true;
}
private static boolean isValidJSONStringArray(String requestBody) {
try {
new JSONArray(requestBody);
} catch (JSONException jsonEx) {
return false;
}
return true;
}
ただし、次の文字列 (行全体) は引き続き通過し、通過すべきではありません。
{"color":"red"}{"var":"value"}
[1,2,3][true,false]
言い換えれば、オブジェクト/配列を親オブジェクトにカプセル化せずに繰り返す場合です。これらの行を www.jsonlint.com バリデーターに貼り付けると、両方とも失敗します。
常に正規表現オプションがあることは知っていますが、JSON の再帰的な性質のために 100% を保証することはできず、それらの正規表現はかなり複雑になると思います。
どんな助けでも大歓迎です!