我有这样的字符串,这些字符串是通过操作DOM获得的。如何将它们转换为javascript对象,以便以后可以对它们进行字符串化?请告知。
我可以将JSON.parse与reviver一起使用吗?
str = "age: 65, name: "Jay", smoker: false"
感谢
让我们从头开始:
您的字符串具有无效的json语法:"age: 65, name: "Jay", smoker: false"
这是一个有效的json语法:{"age": 65, "name": "Jay", "smoker": false}
在将其变为有效之后,您可以只做一个简单的解析:
var json = JSON.parse({"age": 65, "name": "Jay", "smoker": false});
但是,您需要将无效字符串转换为有效的JS对象吗?
我们可以通过这种方式实现:
- 首先,您的字符串需要转义:
var str = "age: 65, name: "Jay", smoker: false";
- 然后,应用此拆分映射函数:
str = str.split(',').map((str) => str.trim().substring(0, str.length).replace(': ', ':'));
- 最后,一个循环来创建对象,过滤不需要的道具类型:
var obj = {};
for (var i = 0; i < str.length; i++) {
var split = str[i].split(':');
// "boolean" to boolean
split[1] = split[1] === "true" ? true : split[1] === "false" ? false : split[1];
// ""string"" to "string"
split[1] = typeof split[1] === 'string' ? split[1].replace(/['"]+/g, '') : split[1];
obj[split[0]] = split[1];
}
// results valid obj: { age: "6", name: "Jay", smoker: false }
使用这个对象,您可以很容易地执行JSON.stringify(obj)
以获得有效的json。
当然,如果您更改字符串结构,则需要重新使用这些函数。