从包含键和值的字符串中创建json对象



我有这样的字符串,这些字符串是通过操作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对象吗?

我们可以通过这种方式实现:

  1. 首先,您的字符串需要转义:
var str = "age: 65,  name: "Jay",  smoker: false";
  1. 然后,应用此拆分映射函数:

str = str.split(',').map((str) => str.trim().substring(0, str.length).replace(': ', ':'));

  1. 最后,一个循环来创建对象,过滤不需要的道具类型:
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。

当然,如果您更改字符串结构,则需要重新使用这些函数。

最新更新