如何解决Clojure API中正确的JSON转义
我有一个Clojure函数,该函数将URL向量的内容写到JSON,并从API端点返回。该端点数据由前端应用程序上的Elm JSON解码器读取。直接运行此Clojure函数可得到以下信息:
(json/write-str ["http://www.example.com?param=value" "http://www.example2.com?param=value"])
哪个返回:
"[\"http:\\/\\/www.example.com?param=value\",\"http:\\/\\/www.example2.com?param=value\"]"
太棒了!如果我将结果直接输入到Elm解码器中,例如:
stringArrayDecoder : Json.Decoder.Decoder (List String)
stringArrayDecoder =
Json.Decoder.list Json.Decoder.string
它愉快地解析,没有错误。
但是,当我查看来自端点的JSON响应时,它丢失了一些转义,我得到了:
["http:\/\/www.example.com?param=value","http:\/\/www.example2.com?param=value"]
我的Elm解码器无法读取。
如何避免这种情况?如何通过API端点将内部函数生成的完全转义的JSON值获取到Elm前端解码器中?
解决方法
JSON允许您escape forward slashes /
和其他字符,以防止诸如</
之类的内容在HTML中弹出。
write-str
具有一个:escape-slash
布尔选项:
:转义斜线布尔值
如果为true(默认值),则斜杠/被转义为\ /
因此您可以改写
(json/write-str ["http://url.one" "http://url.two"] :escape-slash false)
=> "[\"http://url.one\",\"http://url.two\"]"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。