Экранирующий символ для квадратных скобок в php swagger аннотации json свойство

Я пишу 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 довольно большой и сложный

1

Решение

Я нашел какой-то обходной путь, который не на 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.

введите описание изображения здесь

1

Другие решения

Я случайно нашел лучшее решение:

Изменить квадратные скобки ([ а также ]) в:

@SWG\Property(property="result", type="json", example={ "aa": [ "bb", "cc" ] }  )

в брекетах ({ а также }):

@SWG\Property(property="result", type="json", example={ "aa": { "bb", "cc" } }  )

Как видите, мы используем фигурные скобки, но мы не используем ключ: значение (только ключи), поэтому swagger может обнаружить массив.

введите описание изображения здесь

И у нас есть хороший и легкий форматированный JSON в Swagger-UI 🙂

1

По вопросам рекламы [email protected]