看看下面代码怎么转化成JSON格式

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

阅读 3.4k
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}

假如你想用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 字符串了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题