【发布时间】:2012-02-20 15:03:16
【问题描述】:
如何使用 JavaScript(或 jQuery)将描述对象的字符串转换为 JSON 字符串?
例如:转换这个(不是一个有效的 JSON 字符串):
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
进入这个:
str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'
如果可能,我希望避免使用eval()。
【问题讨论】:
-
为什么你的字符串首先不是有效的 JSON?你是怎么产生的?
-
字符串存储在
data-attrubute 中,如下所示:<div data-object="{hello:'world'}"></div>我不想在 HTML 中使用单引号(因此它可能不可信) -
@snorpey:
<div data-object='{"hello":"world"}'></div>是 100% 有效的 HTML(单引号与信任与否有什么关系?)。如果你这样做,你可以JSON.parse它,它会正常工作。 注意:键也需要引用。 -
@Rocket 感谢您的努力!我只是想找到一种方法来避免在 HTML 中使用单引号(即使它是 100% 有效)和 JSON 表示法。
-
@snorpey:他们的方法是首先不将 JSON 放在 HTML 属性中。我猜你可以使用双引号,并转义 JSON
<div data-object="{\"hello\":\"world\"}"></div>中的双引号。如果您不想在属性中使用有效的 JSON,那么您将不得不制作自己的格式并自己解析。
标签: javascript json object