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\\"\""
我正在尝试解码包含转义双引号的字符串,例如"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\\"\""