Json Decoder не работает при декодировании строки, содержащей экранированную двойную кавычку - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь декодировать строку, содержащую экранированную двойную кавычку, например, "Я сказал:" Привет \ ""

Теперь, чтобы сделать это в Elm, я могу использовать Json.Decode в качестве декодера:

Decode.decodeString Decode.string "\"I said, \"Hello\"\""

Однако это вызывает сбой декодера. Кто-нибудь может объяснить почему? Я хотел бы знать, как иметь двойные кавычки в моей строке JSON.

1 Ответ

0 голосов
/ 19 января 2019

Это недопустимая строка JSON, потому что вы не экранируете двойные кавычки на уровне JSON, только на уровне языка. После удаления первого уровня управляющих кодов ваша строка JSON будет выглядеть следующим образом:

"I said, "Hello""

Двойная кавычка перед "Hello" заканчивает строку, поэтому сообщение об ошибке говорит:

Неожиданный токен H в JSON в позиции 10

Строка JSON, которую вы хотите:

"I said, \"Hello\""

Чтобы создать строковый литерал в Elm, вам нужно "дважды убежать" от двойных кавычек, что на практике означает просто добавление экранированного обратного слеша непосредственно перед каждым из экранированных двойных кавычек:

Decode.decodeString Decode.string "\"I said, \\\"Hello\\\"\""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...