Учитывая следующий примерный документ JSON, который представляет собой список полиморфных объектов типа A и B:
[ {
"a" : 1,
"type" : "A"
}, {
"b" : true,
"type" : "B"
}, {
"b" : false,
"type" : "B"
}, {
"a" : 2,
"type" : "A"
} ]
Как бы я мог выбрать As и Bs, чтобы иметь возможность документировать их по-разному.
Выкладываю пример проекта на гитхаб: https://github.com/dibog/spring-restdocs-polymorphic-list-demo
Вот выдержка из моей попытки задокументировать метод выборки:
.andDo(document("fetch-tree",
responseFields(
beneathPath("[0]").withSubsectionId("typeA"),
fieldWithPath("type")
.type(JsonFieldType.STRING)
.description("only node types 'A' and 'B' are supported"),
fieldWithPath("a")
.type(JsonFieldType.NUMBER)
.description("specific field for node type A")
),
responseFields(
beneathPath("[1]").withSubsectionId("typeB"),
fieldWithPath("type")
.type(JsonFieldType.STRING)
.description("only node types 'A' and 'B' are supported"),
fieldWithPath("b")
.type(JsonFieldType.BOOLEAN)
.description("specific field for node type A")
)))
Но я получаю следующее сообщение об ошибке:
org.springframework.restdocs.payload.PayloadHandlingException: [0] identifies multiple sections of the payload and they do not have a common structure. The following non-optional uncommon paths were found: [[0].a, [0].b]
Похоже, что [0] или [1] не работает и интерпретируется как []. Как лучше всего поступить в этой ситуации?
Спасибо, Дитер