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

Json Decoder fails when decoding string containing an escaped double quote

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

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

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

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

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

"I said, "Hello""

"Hello" 之前的双引号结束字符串,因此错误消息显示:

Unexpected token H in JSON at position 10

你要的JSON字符串是:

"I said, \"Hello\""

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

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