解码包含转义的双引号的字符串时,Json Decoder失败

时间:2019-01-19 17:59:02

标签: json elm string-literals

我正在尝试解码包含转义的双引号的字符串,例如“我说,\“你好\”“

现在要在Elm中做到这一点,我可以将Json.Decode用作Decode:

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

但是,这导致解码器失败。谁能解释为什么?我想知道如何在JSON字符串中使用双引号。

1 个答案:

答案 0 :(得分:5)

这不是有效的JSON字符串,因为您没有在JSON级别(仅在语言级别)转义双引号。除去第一级转义码后,您的JSON字符串将如下所示:

"I said, "Hello""

“ Hello”之前的双引号结束了字符串,因此为什么出现错误消息:

  

JSON中位置10处的意外令牌H

所需的JSON字符串为:

"I said, \"Hello\""

要在Elm中将其生成为字符串文字,您必须对“双引号”进行“双转义”,这实际上意味着仅在每个转义的双引号之前添加一个转义的反斜杠:

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