我需要一些可靠的 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%,而且这些正则表达式将相当复杂。
任何帮助将不胜感激!