【发布时间】:2012-10-25 19:25:51
【问题描述】:
我有一个名为blocki 的javascript 对象,我想使用rest API 对其进行序列化和更新。所以我打电话:
JSON.stringify(blocki)
这给了我这个字符串:
"{"name":"Updated Blocki","bounds":{"x":"2em","y":"2em","w":"8em","h":"12em"}}"
这几乎是我所需要的,除了双引号字符串外面应该有单引号,像这样:
'{"name":"Updated Blocki","bounds":{"x":"2em","y":"2em","w":"8em","h":"12em"}}'
根据MDN JSON.stringify 上的示例,它应该返回一个用单引号括起来的字符串。但是当我在该页面中尝试相同的示例时,我得到了用双引号括起来的字符串。例如,当我在 Firefox 和 chrome 控制台中输入 JSON.stringify({}) 时,我会返回 "{}" 而不是 '{}'。
如何正确序列化我的 Javascript 对象,使外部引号为:'。同样,这个字符串是我想要实现的一个例子:
'{"name":"Updated Blocki","bounds":{"x":"2em","y":"2em","w":"8em","h":"12em"}}'
理想情况下,我想学习一种序列化对象的好方法,而不必在序列化后修改字符串。
编辑: 我认为我需要这样做的原因是,当字符串用双引号括起来时,我正在使用的 API 不知何故不高兴。例如当我这样做时
curl -i -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d "{"name":"Updated Blocki","bounds":{"x":"2em","y":"2em","w":"8em","h":"12em"}}" 'http://localhost:3000/api/blockies/17'
请求失败,服务器给出解析错误。但是,当我尝试时:
curl -i -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"name":"Updated Blocki","bounds":{"x":"2em","y":"2em","w":"8em","h":"12em"}}' 'http://localhost:3000/api/blockies/17'
put请求成功,对象被更新。
【问题讨论】:
-
为什么需要包装json字符串?添加引号之类的会使其成为无效的 json 字符串开头。
-
一个字符串不保留它是用双引号还是单引号声明的信息(假设它被声明了)。就 JavaScript 而言,
'"'和"\""是等价的。 -
好的我更新了我的帖子为什么我认为单引号和双引号字符串之间存在差异
-
您不应该以外部引号很重要的方式调用 Curl。如果您正在对 Curl 进行 shell 调用(您没有说明您使用的是哪种语言),您应该(出于安全原因)使用参数作为数组(不带分隔符)而不是作为单个传递的调用字符串。
-
有人可以回答实际问题吗?就我而言,我需要单引号。
标签: javascript json rest