javascript - 看看下面代码怎么转化成JSON格式
天蓬老师
天蓬老师 2017-04-11 12:34:28
[JavaScript讨论组]

var obj = '{name:1}';
怎么把字符串去了,获取其中的属性和属性值

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(6)
怪我咯

你这个并不是一个规范的JSON格式,规范的格式应该是:

var obj = '{"name":1}';

这样的话可以运用:

JSON.parse(obj)

将字符串转化为一个对象。
如果你不能改变你的字符串,就只能用正则去取了。。

迷茫

你这是人工直接构造的字符串么,真不懂JSON字符串为什么要这么构造,这样子直接用JSON.parse是不行的,因为name两边没有引号...

正常的你的JSON字符串应该是,首先有个JSON对象,再用JSON.stringify转化为JSON字符串,就可以用JSON.parse转化回来,这样的JSON字符串,属性名一定是带引号的

所以你的这个字符串要转的话,最好用正则,要么用正则直接去提取,要么用正则给属性名两边加上引号,然后用JSON.parse提取

var obj = '{ name :"hello", age:12}';
var objJStr=obj.replace(/([{,])\s*(\w+)\s*:/g,'$1"$2":');
console.log(JSON.parse(objJStr));//Object {name: "hello", age: 12}
PHP中文网

假如你想用JSON解析,但是字符串里面的不是JSON的标准格式,key需要用“”括起来。不然的话需要自己切割字符串处理了。

迷茫

正则

不知道怎么详细描述答案。。。。

天蓬老师

又一个不规范JSON串的处理,怎么会有这么多的这种问题,可以用Function作处理

let result=(new Function("return "+ obj))();
let name=result.name

当然用eval也可以,不过不提倡用,要用的话最好在外面包一层作用域防止污染。

伊谢尔伦

首先字符串并不是语法上规范的 JSON 字符串。

如果能保证数据是安全的:

var obj = '{name:1}';

obj = eval(`(${obj})`);    // 如果不能保证 obj 字符串中的数据是否安全,慎用

console.log(obj);    // 此时 obj 是一个对象了,可以获取属性
console.log(obj.name);

console.log(JSON.stringify(obj));    // 转换成正常的 JSON 字符串了
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号