Экранирование квадратных скобок php

Экранирующий символ для квадратных скобок в 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

Оцените статью