我正在尝试解码包含转义的双引号的字符串,例如“我说,\“你好\”“
现在要在Elm中做到这一点,我可以将Json.Decode用作Decode:
Decode.decodeString Decode.string "\"I said, \"Hello\"\""
但是,这导致解码器失败。谁能解释为什么?我想知道如何在JSON字符串中使用双引号。
答案 0 :(得分:5)
这不是有效的JSON字符串,因为您没有在JSON级别(仅在语言级别)转义双引号。除去第一级转义码后,您的JSON字符串将如下所示:
"I said, "Hello""
“ Hello”之前的双引号结束了字符串,因此为什么出现错误消息:
JSON中位置10处的意外令牌H
所需的JSON字符串为:
"I said, \"Hello\""
要在Elm中将其生成为字符串文字,您必须对“双引号”进行“双转义”,这实际上意味着仅在每个转义的双引号之前添加一个转义的反斜杠:
Decode.decodeString Decode.string "\"I said, \\\"Hello\\\"\""