javascript - 使用 JSON.stringify(queryObject) 时来自 mongoose js 的意外行为
问题描述
当我这样做JSON.stringify({theKey : 'some\thing'}
时,结果将是:
{"theKey" : "some\\thing"}
但是queryObject
从猫鼬查询返回,JSON.stringify(queryObject)
不会添加第二个反斜杠,所以当我在另一端解析它时它会给我错误。谢谢
解决方案
我认为您将 JSON 的内部表示(可能来自控制台?)误解为 JSON。
\
在定义的 JS字符串"
中开始一个转义序列,'
或者一个反引号,这意味着它后面的字符可能具有特殊含义。让 JS\
在字符串中实际输出 a 。你需要两个斜线。
> console.log('\\')
\
JSON 编码需要使用\
而不是文字制表符输出转义序列。这意味着内部表示有两个\\
s。当您使用字符串时,它看起来没问题:
> console.log(JSON.stringify({theKey : 'some\thing'}))
{"theKey":"some\thing"}
具有特殊含义的转义序列是:
\0
null
\b
退格
\f
换页符
\n
换行符回车符 垂直制表
\t
符unicode unicode
\r
\v
\xNN
\uNN
\"
\'
以下是内部表示和实际 JSON 输出之间差异的更多示例
> a = JSON.stringify("a\az")
'"aaz"'
> console.log(a)
"aaz"
> b = JSON.stringify("a\bz")
'"a\\bz"'
> console.log(b)
"a\bz"
> s = JSON.stringify("a\\z")
'"a\\\\z"'
> console.log(s)
"a\\z"
推荐阅读
- pyspark - 等效于数据类型“真实”的 Spark
- javascript - Vue.js 道具复制和反应性
- animation - 如何使用 Tween.js 在 Three.js 中缩放 3d 对象
- save-as - 循环浏览 3 张照片并使用递增的名称保存每张照片
- python-3.x - Python 请求没有得到正确的 HTML
- python - 使用 python 抓取部分时跳过列表中的链接
- atlassian-crowd - Atlassian Crowd,OpenLDAP 连接器,“密码加密”选项
- python - 无法将张量流导入 PyCharm
- c++ - C++ - 如何为使用我创建的库的 main.cpp 创建生成文件?
- reactjs - 使用 Fetch API 响应实时搜索