为了账号安全,请及时绑定邮箱和手机立即绑定

将对象字符串转换为JSON

将对象字符串转换为JSON

慕少森 2019-08-30 18:03:54
如何使用JavaScript(或jQuery)将描述对象的字符串转换为JSON字符串?例如:转换它(不是有效的JSON字符串):var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"进入这个:str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'我希望eval()尽可能避免使用。
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如果字符串是来自可靠来源,你可以使用eval然后JSON.stringify的结果。像这样:


var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";

var json = JSON.stringify(eval("(" + str + ")"));

请注意,当您eval使用对象文字时,必须将其括在括号中,否则将大括号解析为块而不是对象。


我也同意这个问题下的评论,即在开始时用有效的JSON编码对象会更好,并且避免必须解析,编码,然后可能再次解析它。HTML支持单引号属性(只需确保对字符串中的任何单引号进行HTML编码)。


查看完整回答
反对 回复 2019-08-30
?
慕慕森

TA贡献1856条经验 获得超17个赞

你的字符串是无效的JSON,所以JSON.parse(或jQuery的$.parseJSON)将无法正常工作。


一种方法是使用eval“解析”“无效”JSON,然后stringify将其“转换”为有效的JSON。


var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"

str = JSON.stringify(eval('('+str+')'));

我建议您不要试图“修复”无效的JSON,而是先从有效的JSON开始。如何str生成,它应该在生成之前修复,而不是之后。


编辑:您说(在评论中)此字符串存储在数据属性中:


<div data-object="{hello:'world'}"></div>

我建议你在这里解决它,所以它可以只是JSON.parsed。首先,它们的键和值都需要用双引号引用。它应该看起来像(HTML中的单引号属性是有效的):


<div data-object='{"hello":"world"}'></div>

现在,您可以使用JSON.parse(或jQuery $.parseJSON)。


var str = '{"hello":"world"}';

var obj = JSON.parse(str);


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 415 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号