Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用官方JSON for java库验证JSON_Java_Json_Validation - Fatal编程技术网

使用官方JSON for java库验证JSON

使用官方JSON for java库验证JSON,java,json,validation,Java,Json,Validation,我的问题:如何改进这些方法来检查字符串是否为有效的json,而不必使用 我很确定,依赖异常作为方法逻辑的一部分抛出不是最佳实践。还有别的办法吗 注意:请记住,我不希望使用其他库来执行此操作。这是一个大项目的一小部分,如果我能帮助的话,我不想引入另一个依赖项。如果你不想使用其他库,我认为这是最好的方法。该库中没有验证函数。如果您想使用其他东西,可以尝试使用官方JSON Java库Javadocs中的JSONValidator对象,看起来没有其他方法。由于您不希望使用任何其他库来执行此操作,也不希望

我的问题:如何改进这些方法来检查字符串是否为有效的json,而不必使用

我很确定,依赖异常作为方法逻辑的一部分抛出不是最佳实践。还有别的办法吗


注意:请记住,我不希望使用其他库来执行此操作。这是一个大项目的一小部分,如果我能帮助的话,我不想引入另一个依赖项。

如果你不想使用其他库,我认为这是最好的方法。该库中没有验证函数。如果您想使用其他东西,可以尝试使用官方JSON Java库Javadocs中的
JSONValidator
对象,看起来没有其他方法。由于您不希望使用任何其他库来执行此操作,也不希望产生异常处理所增加的开销,因此一种解决方法是检查它们的异常并自己重写类似于
isValidJSON
的方法(不添加异常处理)。这样做的一个缺点是,将来不会自动对该类/方法进行修改


如果您愿意使用其他库,您可以检查哪一个库具有类似于返回布尔值的方法。

根据我对javadocs标准的理解,没有具体的方法可以检查这一点。除非处理异常并使用try-catch块验证它。您可以使用任何其他LIB来验证这一点。这里有一个可以使用JavaUtils的。有一个方法名maybeJson(String),它返回布尔值并验证json

其他图书馆是如何做到这一点的?你认为是这样吗?我认为如果JSON格式不正确,大多数解析库都会抛出异常,但我不确定在sceneJSONValidator允许使用用户定义的规则/模式验证JSON之后是如何完成的。如果无效JSON不是正常情况,我认为这种方法没有问题。我只是想知道你为什么需要验证。如果您接收到字符串,您可能希望以任何方式对其进行解析,并且如果生成该字符串,则设计上应该是正确的。不要使用mayBeJSON,它的逻辑太简单,它会检查字符串是否以{或[]开头和结尾,而不检查其他内容。
public boolean isValidJSON(String possibleJson) {
  return isJSONObject(possibleJson) || isJSONArray(possibleJson);
}

private boolean isJSONObject(String possibleJson) {
  try {
    new JSONObject(possibleJson);
    return true;
  } catch (JSONException ex) {
    return false;
  }
}

private boolean isJSONArray(String possibleJson) {
  try {
    new JSONArray(possibleJson);
    return true;
  } catch (JSONException ex) {
    return false;
  }
}