Экранирующий символ для квадратных скобок в 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 довольно большой и сложный
Решение
Я нашел какой-то обходной путь, который не на 100% удовлетворяет, однако я положу его здесь:
@SWG\Property(property="result", type="json", example= < "aa": [ "bb", "cc" ] >)
@SWG\Property(property="result", type="json", example="< ""aa"": [ ""bb"", ""cc"" ] >" )
Ты можешь использовать это регулярное выражение конвертировать цитаты в вашем JSON.
Если у вас есть проблемы, вы также можете изменить type=»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 🙂
Экранирование квадратных скобок php
Сила регулярных выражений исходит из возможности использовать условия и повторения в шаблоне. Они записываются при помощи метасимволов, которые специальным образом интерпретируются.
Существуют два различных набора метасимволов: те, которые используются внутри квадратных скобок, и те, которые используются вне квадратных скобок. Вне квадратных скобок используются следующие метасимволы:
Метасимвол | Описание |
---|---|
\ | общий экранирующий символ, допускающий несколько вариантов применения |
^ | декларирует начало данных (или строки в многострочном режиме) |
$ | декларирует конец данных или до завершения строки (или окончание строки в многострочном режиме) |
. | соответствует любому символу, кроме перевода строки (по умолчанию) |
[ | начало описания символьного класса |
] | конец описания символьного класса |
| | начало ветки условного выбора |
( | начало подмаски |
) | конец подмаски |
? | расширяет смысл метасимвола (, является также квантификатором, означающим 0 или 1 вхождение, также преобразует жадные квантификаторы в ленивые (смотрите повторение)) |
* | квантификатор, означающий 0 или более вхождений |
+ | квантификатор, означающий 1 или более вхождений |
начало количественного квантификатора | |
> | конец количественного квантификатора |
Часть шаблона, заключённая в квадратные скобки называется символьным классом. В символьном классе используются следующие метасимволы:
Метасимвол | Описание |
---|---|
\ | общий экранирующий символ |
^ | означает отрицание класса, допустим только в начале класса |
— | означает символьный интервал |
Следующие разделы детально описывают каждый из перечисленных метасимволов.
User Contributed Notes
- Описание синтаксиса Perl-совместимых регулярных выражений
- Вступление
- Разделители
- Метасимволы
- Экранирующие последовательности
- Свойства Unicode-символов
- Якоря
- Метасимвол точка
- Символьные классы
- Альтернативный выбор
- Установка внутренних опций
- Подмаски
- Повторение
- Обратные ссылки
- Утверждения
- Однократные подмаски
- Условные подмаски
- Комментарии
- Рекурсивные шаблоны
- Производительность