簡體   English   中英

將字符串轉換為嵌套的JSON對象

[英]Converting A String Into a Nested JSON Object

我想知道這是否可能沒有eval(我聽說它是​​邪惡的)。

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:{}}}};

可用於解決問題的功能是使用字符串索引進行動態屬性訪問。 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM