我有一个字符串as
string = "firstName:name1, lastName:last1";
现在我需要一个对象obj这样
obj = {firstName:name1, lastName:last1}
我如何在JS中做到这一点?
我有一个字符串as
string = "firstName:name1, lastName:last1";
现在我需要一个对象obj这样
obj = {firstName:name1, lastName:last1}
我如何在JS中做到这一点?
当前回答
你的字符串看起来像一个没有花括号的JSON字符串。
这应该工作,然后:
obj = eval('({' + str + '})');
警告:这会引入重大的安全漏洞,例如使用不受信任的数据(应用程序用户输入的数据)进行XSS。
其他回答
你的字符串看起来像一个没有花括号的JSON字符串。
这应该工作,然后:
obj = eval('({' + str + '})');
警告:这会引入重大的安全漏洞,例如使用不受信任的数据(应用程序用户输入的数据)进行XSS。
如果我没理解错的话:
var properties = string.split(', ');
var obj = {};
properties.forEach(function(property) {
var tup = property.split(':');
obj[tup[0]] = tup[1];
});
我假设属性名在冒号的左边,它所取的字符串值在右边。
注意Array。forEach是JavaScript 1.6——您可能需要使用工具包来实现最大的兼容性。
我知道这是一个老帖子,但没有看到这个问题的正确答案。
var jsonStrig = '{';
var items = string.split(',');
for (var i = 0; i < items.length; i++) {
var current = items[i].split(':');
jsonStrig += '"' + current[0] + '":"' + current[1] + '",';
}
jsonStrig = jsonStrig.substr(0, jsonStrig.length - 1);
jsonStrig += '}';
var obj = JSON.parse(jsonStrig);
console.log(obj.firstName, obj.lastName);
现在你可以使用obj了。firstName和obj。lastName来获取值,就像你通常对一个对象所做的那样。
我使用的是JSON5,它工作得非常好。
好的部分是它不包含eval和new Function,使用起来非常安全。
如果你正在使用JQuery:
var obj = jQuery.parseJSON('{"path":"/img/filename.jpg"}');
console.log(obj.path); // will print /img/filename.jpg
记住:eval是邪恶的!: D