使用 JSON.stringify(queryObject) 时来自 mongoose js 的意外行为

     2023-03-11     303

关键词:

【中文标题】使用 JSON.stringify(queryObject) 时来自 mongoose js 的意外行为【英文标题】:Unexpected behavior from mongoose js when using JSON.stringify(queryObject) 【发布时间】:2021-08-28 21:30:08 【问题描述】:

当我执行JSON.stringify(theKey : 'some\thing' 时,结果将是:

"theKey" : "some\\thing"

但是 queryObject 从 mongoose 查询返回,JSON.stringify(queryObject) 不会添加第二个反斜杠,所以当我在另一端解析它时它会给我错误。谢谢

【问题讨论】:

结果将是 `"theKey" : "some\\thing",但带有 ... 如果你把代码部分反引号` `它会被高亮显示 你看到额外的` when inspecting in a REPL or the console? It's not actually in the JSON. The JSON value is also "some\thing"` 【参考方案1】:

我认为您将 JSON(可能来自控制台?)的内部表示误解为 JSON。

\"' 或反引号内定义的JS strings 中启动转义序列,这意味着它后面的字符可能具有特殊含义。让 JS 在字符串中实际输出\。你需要两个斜线。

> console.log('\\')
\

JSON 编码需要输出带有\ 的转义序列,而不是文字制表符。这意味着内部表示有两个\\s。当您使用字符串时,它看起来没问题:

> console.log(JSON.stringify(theKey : 'some\thing'))
"theKey":"some\thing"

有特殊含义的escape sequences是:

\0null\b退格\f换页\n换行\t制表符\r回车\v垂直制表符 \xNNunicode\uNNunicode\"\'

这里有更多关于内部表示和实际 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"

【讨论】:

json.stringify()的深度使用

在使用JSON.stringify()对JSON数据进行序列化时1>如果里面的属性是function,则会被忽略constdata={a:‘a‘,fn:funciton(){returntrue}}JSON.stringify(data);//"{"a":"a"}"*******fn属性被忽略了**********2>如果里面的属性的值是undefined,也是会被忽略的constda 查看详情

json.stringify(),json.parse(),tojson()方法使用

JSON.stringify():将value(Object,Array,String,Number...)序列化为JSON字符串JSON.parse():将JSON数据解析为js原生值toJSON(),作为JSON.stringify中第二个参数(函数过滤器)补充,理解内部顺序很重要。假设把一个对象传入JSON.stringify()序列化对象的顺序如... 查看详情

使用 JSON.stringify 时不需要的数组索引

】使用JSON.stringify时不需要的数组索引【英文标题】:UnwantedarrayindexeswhenusingJSON.stringify【发布时间】:2012-02-1109:04:27【问题描述】:我使用JSON.stringify方法将数组传递给服务器。我有一个包含4个元素的数组:arr[10]=1;arr[20]=1;arr[30]... 查看详情

关于vue中json.parse(json.stringify(...))使用深拷贝问题

一般我们单独用JSON.parse()或JSON.stringify()今天在学vue看到JSON.parse(JSON.stringify(...))的用法,这里研究一下;首先分别说下他们的用法:  JSON.parse() 是将字符串中的对象解析出来例: varstr="{‘name‘:‘huahua‘,‘age‘:‘22‘}... 查看详情

如何正确使用 JSON.stringify 和 json_decode()

】如何正确使用JSON.stringify和json_decode()【英文标题】:howtouseJSON.stringifyandjson_decode()properly【发布时间】:2013-04-0520:36:46【问题描述】:我试图通过以下方式将多维Javascript数组传递到我网站上的另一个页面:在数组上使用JSON.strin... 查看详情

json.parse()和json.stringify()使用

...在{}外,每个属性名都必须用双引号,否则会抛出异常。stringify()用于从一个对象解析出字符 查看详情

Node.js - 使用 json.stringify 时,正文搞砸了

】Node.js-使用json.stringify时,正文搞砸了【英文标题】:Node.js-Bodyismessedupwhenusingjson.stringify【发布时间】:2014-07-3116:19:49【问题描述】:客户:$.ajax(url:some_url,type:\'post\',dataType:\'json\',data:JSON.stringify(myArray:[])...$.ajax(url:some 查看详情

使用 JSON.stringify(queryObject) 时来自 mongoose js 的意外行为

】使用JSON.stringify(queryObject)时来自mongoosejs的意外行为【英文标题】:UnexpectedbehaviorfrommongoosejswhenusingJSON.stringify(queryObject)【发布时间】:2021-08-2821:30:08【问题描述】:当我执行JSON.stringify(theKey:\'some\\thing\'时,结果将是:"theKey":"s... 查看详情

qs.stringify、qs.parse、json.stringify的使用和区别

...安装,是一个npm仓库所管理的包。importqsfrom'qs'而qs.stringify()将对象序列化成URL的形式,以&进行拼接。如图qs.parse()将URL解析成对象的形式JSON是正常类型的JSON JSON.stringify同qs.stringify()对比,功能虽然是都是序列化,但是... 查看详情

在 Angular2 模板的表达式中使用 JSON.stringify

】在Angular2模板的表达式中使用JSON.stringify【英文标题】:UsingJSON.stringifyinanexpressioninAngular2template【发布时间】:2016-12-0200:36:45【问题描述】:我有一个小表达式来检查两个对象是否不同,以便显示这个元素(通过添加类名):&l... 查看详情

使用 JSON.stringify 将冒号转换为 unicode

】使用JSON.stringify将冒号转换为unicode【英文标题】:JSON.stringifyconvertscoloninsidestringtoaunicodecharacter[closed]【发布时间】:2021-09-1319:23:50【问题描述】:我在javascript中有一个对象,像这样time:"YYYY-MM-DDT00:00:00.000Z@YYYY-MM-DDT23:59:59.999Z"当... 查看详情

使用 JSON.stringify 将对象转换为字符串显示空对象 [重复]

】使用JSON.stringify将对象转换为字符串显示空对象[重复]【英文标题】:convertobjecttostringusingJSON.stringifyshowemptyobject[duplicate]【发布时间】:2018-12-0918:49:00【问题描述】:我正在尝试使用JSON.stringify将对象转换为字符串,但我得到了... 查看详情

格式化输出json

参考技术AJSON.stringify()是将JavaScript对象转换为JSON的规范方法。有许多JavaScript框架在内部都使用了JSON.stringify(),比如Express框架的res.json()和Axiosbody序列化。但是,默认情况下,JSON.stringify()输出的JSON格式,不带空格或颜色。在后... 查看详情

data-* 属性中的 encodeURIComponent() 与 JSON.stringify()

】data-*属性中的encodeURIComponent()与JSON.stringify()【英文标题】:encodeURIComponent()vsJSON.stringify()indata-*attribute【发布时间】:2014-10-1004:39:07【问题描述】:我想使用数组作为data-*属性,并且很多***答案建议我应该使用JSON.stringify();Howt... 查看详情

相当于 JSON.stringify 的 jquery [重复]

】相当于JSON.stringify的jquery[重复]【英文标题】:jqueryequivalentforJSON.stringify[duplicate]【发布时间】:2012-06-2213:17:18【问题描述】:可能重复:SerializingtoJSONinjQuery我在我的javascript代码中使用jquery作为库。但有时我必须JSON.stringify()。... 查看详情

JSON.stringify() 数组的怪异与 Prototype.js

】JSON.stringify()数组的怪异与Prototype.js【英文标题】:JSON.stringify()arraybizarrenesswithPrototype.js【发布时间】:2012-11-2502:06:51【问题描述】:我正在尝试找出我的json序列化出了什么问题,将我的应用程序的当前版本与旧版本一起使用... 查看详情

JSON.stringify 和 JSON.parse 之间的区别

】JSON.stringify和JSON.parse之间的区别【英文标题】:DifferencebetweenJSON.stringifyandJSON.parse【发布时间】:2013-07-2101:42:07【问题描述】:我一直对何时使用这两种解析方法感到困惑。在我回显我的json_encoded数据并通过ajax将其取回后,我... 查看详情

为啥 TypeError 上的 JSON.stringify 返回一个空对象 [重复]

】为啥TypeError上的JSON.stringify返回一个空对象[重复]【英文标题】:WhydoesJSON.stringifyonTypeErrorreturnanemptyobject[duplicate]为什么TypeError上的JSON.stringify返回一个空对象[重复]【发布时间】:2016-03-2118:22:09【问题描述】:我正在使用节点4.... 查看详情