给定一个字符串作为点符号,我将如何从该字符串创建一个对象(检查已经存在的属性):例如
var obj = {};
stringToObj('a.b', 'value1', obj);
stringToObj('a.b.c', 'value2', obj);
会产生
{
"a": {
"b": {
"_x": "value1",
"c": {
"_x": "value2"
}
}
}
}
我看过this question和 this one但似乎都不足以满足我所做的事情。
有什么想法吗?
最佳答案
如果您正在寻找对象中没有 _x 的解决方案,请尝试此代码。对上面的代码稍作修改(非常棒)
stringToObj = function(path,value,obj) {
var parts = path.split("."), part;
var last = parts.pop();
while(part = parts.shift()) {
if( typeof obj[part] != "object") obj[part] = {};
obj = obj[part]; // update "pointer"
}
obj[last] = value;
}
作为奖励,如果你想更新现有对象的一部分,上面的代码将起作用:)
var obj = {a:{b:3}};
stringToObj("a.b",10,obj);
console.log(obj); //result : {a:{b:10}}
关于javascript - 将带点符号的字符串转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985676/