2

私の質問:これらのメソッドを改善して、公式の JSON for Java ライブラリJSONExceptionを使用して sを無視せずに文字列が有効な json であることを確認するにはどうすればよいですか?

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 Toolsを試すことができますJSONValidator

于 2013-01-07T16:59:42.070 に答える
0

公式の JSON Java ライブラリ Javadocs から、他の方法はないようです。これを行うために他のライブラリを使用したくなく、例外処理によって追加されるオーバーヘッドを被りたくないため、回避策はソースコードisValidJSONを確認し、 (例外処理を追加せずに) 自分のようなメソッドを書き直すことです。これの欠点は、そのクラス/メソッドへの将来の変更を自動的に取得できないことです。

他のライブラリを使用する場合は、ブール値を返すmayBeJSONのようなメソッドを持つ JSONUtilsを確認できます。

于 2013-01-07T17:03:00.903 に答える