Учитывая следующий примерный JSON документ, который представляет собой список полиморфных c объектов типов A и B:
[ {
"a" : 1,
"type" : "A"
}, {
"b" : true,
"type" : "B"
}, {
"b" : false,
"type" : "B"
}, {
"a" : 2,
"type" : "A"
} ]
Как я могу выбрать As и B для иметь возможность документировать их по-разному.
Я поместил пример проекта на github: 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] не работают и интерпретируются как []. Как лучше всего разрешить эту ситуацию?
Спасибо, Дитер