在 Javascript 对象上使用 JSON.stringify 会插入反斜杠
Posted
技术标签:
【中文标题】在 Javascript 对象上使用 JSON.stringify 会插入反斜杠【英文标题】:Using JSON.stringify on Javascript object inserts backslashes 【发布时间】:2016-07-20 05:28:58 【问题描述】:我想创建一个这样的对象,然后将其转换为可以存储在我的 mongodb 中的 JSON
var value1="1"
var value2="2"
var obj = field1:value1,field2:value2
JSON.stringify(obj)
不幸的是,这会产生:
\field1\:\1\,\field2\:\2\
仅供参考,我正在使用 Mongoose,并且正在尝试执行 push(obj)。 Console.log 显示,只要我对 obj 进行字符串化,就会添加反斜杠。
我的实际代码是这样的:
var newPaymentMethod =
token:token, type: result.cardType, number: result.last4, expiration: result.expirationDate;
看起来它成功地做了我想要的,但副作用是反斜杠。这是在我的数据库中看到的字段:
\"token\":\"cpkp86\",\"type\":\"MasterCard\",\"number\":\"4444\",\"expiration\":\"01/2018\""
这就是我想要的,减去反斜杠。
【问题讨论】:
你确定吗?我得到一个没有斜杠的字符串:jsfiddle.net/qpzLj5zd 我修改了 OP 以显示我的实际 obj 看起来它正在用\替换"
。试试console.log('"')
看看会不会出现同样的结果
是的。是什么原因,我该如何解决?修改了 OP 以准确地向您展示它在我的数据库中的样子。
您使用什么工具/应用程序来执行 .js?
【参考方案1】:
这是与猫鼬相关的问题,请先尝试:click(阅读 cmets)。或者如果您不想阅读:
JSON.stringify(obj.toObject(minimize:false));
我想在您的代码中指出的是一件事:
代替:
var value1="1"
var value2="2"
这样做:
var value1 = 1,
value2 = 2;
当您将数字放在引号之间时,它们会被视为字符串,这会给您带来很多麻烦。 value1 + value2
在第一种情况下会给你 12 ("foo" + "bar" = foobar
),同时预期的输出是 3,你获得将变量定义为数字(第二种情况)。
【讨论】:
这不起作用。该示例适用于想要将文档转换为对象的人。另外,js对象没有toObject()方法。 是的,我的错,对不起。尽管如此,请记住将数字定义为字符串的后果。至于你的问题,这真的很奇怪。当您打开控制台并检查 console.log(JSON.stringify(obj)) 时,obj 会说什么?另外,没有字符串化的 console.log(obj) 的输出是什么? 当我对对象进行字符串化时,它会立即得到反斜杠。然后当我 JSON.parse 新字符串时,我得到这个: token: '99659w',\n type: 'MasterCard',\n number: '4444',\n expiration: '04/2018' "
这不是正确的输出。检查里面有什么并找到obj。看看它传递了什么值。你编辑的速度比光速还快。
我的意思是你浏览器的开发者工具/firebug中的控制台,无论你使用什么。以上是关于在 Javascript 对象上使用 JSON.stringify 会插入反斜杠的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xcode (swift) 中从 Json Schema / Json 生成模型对象?
在 Javascript 对象上使用 JSON.stringify 会插入反斜杠
使用javascript限制在特定div窗口上的html内拖动对象
在 JavaScript 中使用 fetch() 时,如何将返回对象的详细信息呈现到 html 页面上
无法在使用 *[Symbol.iterator]() 生成器 javascript 创建的可迭代对象上使用 next()