将字符串转换为嵌套的JSON对象

时间:2014-07-09 17:30:11

标签: javascript

我想知道如果没有评估这是否可能(我听说它是​​邪恶的)。

var myString = 'myObject.property.subproperty';

并将其转换为

var obj = {
    myObject: {
        property: {
            subproperty: {}
        }
    }
};

在这里待了2个小时。

我不喜欢的val解决方案:

我可以用输入字符串来完成。

var myString = 'myObject.property.subproperty';
var nameTree = myString.split('.');
var evalString = '';
var myObj = {};
_.forEach(nameTree, function(value, key){

    if (key == 0) {
        evalString += 'myObj[' + value + '] = {};';
    } else {
        evalString += '[' + value + '] = {};';
    }
});

eval(evalString);

我明白了:

console.log(myObj);

// {myObject: {property:{subproperty:{}}}};

1 个答案:

答案 0 :(得分:3)

可用于解决问题的功能是使用字符串索引进行动态属性访问。 obj["foo"]obj.foo相同。

var properties = myString.split('.');
var obj = {};
var curr = obj;
for(var i=0; i<properties.length; i++){
    var next = {}
    curr[properties[i]] = next;
    curr = next;
}