Я пишу API в Php Laravel и использую аннотации swagger (2.0) (lib: darkaonline / L5-чванство которые используют чванство-PHP), чтобы сгенерировать swagger.json, однако у меня возникает следующая проблема — когда я набираю:
/**
*
* Space Schema
*
* @SWG\Get(
* path="/api/v1/client/space/schema",
* @SWG\Response(
* response=200,
* description="OK",
* @SWG\Property(property="result", type="json", example={ "aa": [ "bb", "cc" ] } )
* )
* )
И попробуйте gen swagger.json я получаю:
[Syntax Error] Expected PlainValue, got '[' in ...
Но когда я не использую квадратные скобки, как например:
@SWG\Property(property="result", type="json", example={ "ee": "ff" })
То все в порядке. Однако мне нужно использовать квадратные скобки, поэтому вопрос таков:
Для чего нужен побег [
(квадратная скобка) в строке json в аннотациях чванства?
Я также хочу добавить, что мой пример JSON довольно большой и сложный
Я нашел какой-то обходной путь, который не на 100% удовлетворяет, однако я положу его здесь:
+ Изменить
@SWG\Property(property="result", type="json", example={ "aa": [ "bb", "cc" ] } )
чтобы:
@SWG\Property(property="result", type="json", example="{ ""aa"": [ ""bb"", ""cc"" ] }" )
Ты можешь использовать это регулярное выражение конвертировать цитаты в вашем JSON.
Если у вас есть проблемы, вы также можете изменить type="json"
в
type="string", format="json"
Но это очень важно, потому что вы меняете определение результата API …
Недостатком этого решения является то, что в чванство-щ Вы не получите хороший отформатированный JSON, но строка с удвоенным ""
Однако, если вы нажмете «Модель», дублирование исчезнет, и разработчик сможет скопировать пример json.
Я случайно нашел лучшее решение:
Изменить квадратные скобки ([
а также ]
) в:
@SWG\Property(property="result", type="json", example={ "aa": [ "bb", "cc" ] } )
в брекетах ({
а также }
):
@SWG\Property(property="result", type="json", example={ "aa": { "bb", "cc" } } )
Как видите, мы используем фигурные скобки, но мы не используем ключ: значение (только ключи), поэтому swagger может обнаружить массив.
И у нас есть хороший и легкий форматированный JSON в Swagger-UI 🙂