2

我的问题:如何改进这些方法来检查字符串是否有效 json ,而不必JSONException通过使用官方 JSON for java 库来忽略 s ?

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;
  }
}

我很确定依赖作为方法中逻辑的一部分抛出的异常不是最佳实践。还有另一种方法可以做到这一点吗?

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

4

3 回答 3

1

如果您不想使用其他库,我认为这是最好的方法。该库中没有验证功能。如果您想使用其他东西,您可以尝试JSON ToolsJSONValidator对象

于 2013-01-07T16:59:42.070 回答
0

从官方的 JSON Java 库 Javadocs 来看,似乎没有其他方法。由于您不想使用任何其他库来执行此操作,并且您不想招致异常处理增加的开销,因此一种解决方法是检查它们的源代码并像您一样重写一个方法isValidJSON(不添加异常处理)。这样做的一个缺点是您不会自动获得对该类/方法的未来修改。

如果您愿意使用其他库,您可以查看JSONUtils,它有一个类似 mayBeJSON的方法,它返回一个布尔值。

于 2013-01-07T17:03:00.903 回答
0

根据我对 javadocs 标准的理解,没有特定的方法可以检查这一点。除非您处理异常并使用 try catch 块对其进行验证。您可以使用任何其他库来验证这一点。那么这里你可以使用http://json-lib.sourceforge.net/apidocs/net/sf/json/util/JSONUtils.html JavaUtils。有方法名称可能是 JSON(String),它返回布尔值并验证 json。

于 2017-12-14T07:28:33.257 回答