所以我想创建这个 JSON 对象:
{
"id":"3",
"created":"0000-00-00",
"parentIDs":null,
"childIDs":"",
"uid":"movies",
"title":"Movies",
"related":"movies",
"pos":"",
"css":"{ "background-image":"-webkit-linear-gradient(bottom, rgb(46,44,46) 49%, rgb(18,17,18) 75%)" }"
}
来自字符串:
value = ""id":"3","created":"0000-00-00","parentIDs":null,"childIDs":"","uid":"imdb","title":"Imdb","related":"movies","pos":"""
该字符串来自数据库,因此我无法真正更改格式,但它应该是正确的。
(该字符串源自一组类似的字符串,我对其进行迭代,但不知何故丢失了它们周围的 {})
我尝试使用 value.substr(1, value.length - 2);
删除外部引号。然后使用 .toJSON();
进行转换,但它只会添加大量我不需要的额外斜杠。
我只需要在它周围添加 {}
,然后 javascript 就会将其视为 JSON 对象。
有没有什么速记方法可以做到这一点?或者是否有一个小库可以以巧妙的方式将我的凌乱字符串转换为 JSON 对象?
[update]
我尝试过: eval('{' + value + '}');
但我在 Chrome 中收到 Uncaught SyntaxError: Unexpected token :
。
我尝试了 JSON.parse 但得到: TypeError: JSON.parse is not a function
在 Chrome 和 Firefox 中,它必须是字符串的格式。我开始怀疑“css”条目,尽管它在第一个“id”条目处开始提示,但它期望的是一个函数而不是 JSON?
(我删掉了原始 JSON,但忘记了最重要的“css”)
[更新2]
好的,所以我将 css 数据更改为 '
而不是 "
,现在它实际上会解析,但现在我的脚本已损坏,因为我期待原始数据来自数据库的 CSS,有什么方法可以将生成的 'css':'blabla'
更改为: "css":"blabla"
?
最佳答案
如果您有一个包含有效 JSON 的字符串,则可以使用 JSON.parse()
将其转换为 JavaScript 对象。
假设你有一个字符串:
value = '"id":"3","created":"0000-00-00","parentIDs":null,"childIDs":"","uid":"imdb","title":"Imdb","related":"movies","pos":""';
然后你会这样做:
obj = JSON.parse("{"+value+"}");JSON
请注意,它需要 {}
作为字符串的一部分才能成为有效的 JSON 字符串。
关于jquery - 从字符串创建 JSON,用作对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232075/