我需要一种可靠的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验证器中,则两者都会失败。
我知道总是有正则表达式选项,但我想不能保证100%,因为JSON的递归性质以及那些正则表达式会变得非常复杂。
非常感谢任何帮助!