Создать значение Json с многострочным - PullRequest
0 голосов
/ 11 июня 2019

У меня есть файл json, содержащий мульти-ключи и значения. Я хочу, чтобы одно из значений содержало внутри себя новую строку. Я пробовал более одного варианта, как вы можете видеть в следующем

{
 "ans": "first line \n second line \n third line",
 "ans1": "first line '\n' second line '\n' third line",
 "ans2": "first line '\\n' second line '\\n' third line",
 "ans3": ["Line one", "line Two", "Line Three"]
}

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Строки JSON не могут содержать буквенные (то есть неэкранированные) символы возврата или символы новой строки.

Обычный способ указать «символ новой строки» в строке JSON - использовать двухсимвольную последовательность \n.

Таким образом, в вашем примере JSON .ans и .ans2 содержат две спецификации символов новой строки, тогда как .ans2 не имеет спецификаций символов новой строки, поскольку трехсимвольная подпоследовательность \\n обозначает буквенный обратный слеш, следующий за буквойn.

Если (например) вы хотите «декодировать» .ans как «необработанную» строку (т. Е. С буквенными символами новой строки), вы можете использовать программу командной строки, , вот так:

$ jq -r .ans1 <<< "$json"
first line 
 second line 
 third line
0 голосов
/ 11 июня 2019

Вы можете использовать шаблонные литералы вместо строковых кавычек, просто используйте обратную галочку (`) вместо кавычек, это клавиша над клавишей TAB на клавиатуре.тогда не нужно использовать \ n или что-либо еще, если вы пишете в литералах шаблона, просто нажмите ввод, и он будет рассматривать это как разрыв строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...