如何使用 JavaScript(或 jQuery)将描述对象的字符串转换为 JSON 字符串?
例如:转换这个(不是一个有效的 JSON 字符串):
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
进入这个:
str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'
如果可能,我希望避免使用 eval()
。
最佳答案
如果字符串来自受信任的来源,您可以使用 eval
然后 JSON.stringify
结果。像这样:
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";
var json = JSON.stringify(eval("(" + str + ")"));
请注意,当您eval
一个对象字面量时,它必须用括号括起来,否则大括号将被解析为 block 而不是对象。
我也同意问题下的评论,那就是最好只在有效的 JSON 中编码对象,然后避免解析、编码,然后大概解析它再次。 HTML 支持单引号属性(只需确保对字符串中的任何单引号进行 HTML 编码)。
https://stackoverflow.com/questions/9036429/