var obj = '{name:1}';
怎么把字符串去了,获取其中的属性和属性值
你这是人工直接构造的字符串么,真不懂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}
又一个不规范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 字符串了
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
你这个并不是一个规范的JSON格式,规范的格式应该是:
这样的话可以运用:
将字符串转化为一个对象。
如果你不能改变你的字符串,就只能用正则去取了。。