コメントに記載されているようにあなたは、パスライトせずに存在するかどうかを確認するために、よりエレガントな方法があるかもしれない、例外をキャッチすることができますことは事実であるがコード全体にcatchブロックを試してください。
あなたはjayway-jsonpathで、次の設定オプションを使用することができます。
com.jayway.jsonpath.Option.SUPPRESS_EXCEPTIONS
をアクティブに例外がスローされないこのオプションを使用します。 メソッドを使用する場合は、パスが見つからない場合は、nullが返されます。
@ParameterizedTest
@ArgumentsSource(CustomerProvider.class)
void replaceStructuredPhone(JsonPathReplacementArgument jsonPathReplacementArgument) {
DocumentContext dc = jsonPathReplacementHelper.replaceStructuredPhone(
JsonPath.parse(jsonPathReplacementArgument.getCustomerJson(),
Configuration.defaultConfiguration().addOptions(Option.SUPPRESS_EXCEPTIONS)),
"$.cps[5].contactPhoneNumber", jsonPathReplacementArgument.getUnStructuredPhoneNumberType());
UnStructuredPhoneNumberType unstructRes = dc.read("$.cps[5].contactPhoneNumber.unStructuredPhoneNumber");
assertThat(unstructRes).isNotNull();
// this path does not exist, since it should have been deleted.
Object structRes = dc.read("$.cps[5].contactPhoneNumber.structuredPhoneNumber");
assertThat(structRes).isNull();
}
をなぜ例外をキャッチし、それを処理しない:ここでは
はJUnitの5とあなただけのJSONのパスが存在するかどうかを確認するためのtry/catchブロックを避けて、この設定オプションを使用する方法を示すAssertJと例です。そう? – Lucero
私はそれを行うことができますが、読み込み前にパスを検証する方がよりクリーンなアプローチになると考えていました –
必ずしもそうではありません - この特定の例外をキャッチするよりもパスをチェックするほうが高価かもしれません – Lucero