1
私はAPIの出力を解析しています。解析ロジックを可能な限り一般的なものにしたいと思います。多くのapi呼び出しは共通のラッパー内のオブジェクトを返します。応答はこのような何かを見て:この応答ではjackson JsonNodeで未知のキー名を越えてナビゲートする方法はありますか?
{
"success": true,
"data": {
"object_type": {
"object_id": { /* actual object data */ }
}
}
}
を、object_type
は、いくつかの異なる文字列のいずれかになります。オブジェクトで取得するには、この文字列とidフィールドをスキップする方法は
private static ObjectMapper MAPPER = new ObjectMapper();
<T> APIResponse<T> parseResponse(String input, Class<T> clazz) {
JsonNode node = MAPPER.readTree(input);
boolean success = node.path("success").asBoolean(true);
// This is what I'd like to be able to do but I can't seem to
// find anything like it
JsonNode objectNode = node.path("data").unwrap().firstValue();
T object = MAPPER.treeToValue(objectNode, clazz);
return APIResponse.of(success, object);
}
あります:私は、内部オブジェクトのクラス参照を取り込み、これらの応答を処理するための関数を書いていますか?私はJsonNodeの.elementsを呼び出して最初のものを取り出せることは知っていますが、より簡単な方法がありますか?
ありがとう、私はそれを行う唯一の方法だと思います。 –