如何从平面数据创建javascript json多维树

时间:2018-08-07 10:33:02

标签: javascript jquery json

大家好,我在从输入表单创建JSON树时遇到问题。假设您有一个字段部分,然后动态地添加了更多部分。更确切地说,我在谈论开关属性。我只是不知道如何将键添加为新数组,然后在其中放置更多具有值的属性。这是我正在使用的代码。

// FIRST部分仅包含有关开关的基本信息

function generateNewSwitchInDB() {
    var portInfo = [];
    $('#myModal').find('#inputs').find('input').each(function(){
        var switchProperty = $(this)[0].id;
        portInfo[switchProperty] = $(this)[0].value;
    });

// SECOND部分动态循环遍历新创建的部分并获取输入ID和输入值

    portInfo.push({'portSlots' : 'portSlot'});
    $('#myModal').find('.ports').each(function(){
        portInfo[0]['portSlots'][$(this)[0].id] = $(this)[0].id;
        $(this).find('input').each(function(){
            var placeHolder = $(this)[0].placeholder;
            portInfo[0]['portSlots']['0'][placeHolder] = $(this)[0].value;
        });
    });

    console.log(portInfo);
}

我想要实现的目标应该看起来像这样,但是我无法弄清楚如何向其中推送新键并向该键添加属性。

{
 'SwitchBasicInfo':{
            'location':'Munich',
            'vendor':'Cisco',
            'hostname':'Switch123',
 },
 'Slots':{
        'slot1':{
           'numberOfEthernetPorts':'20',
           'numberOfSerialPorts':'50',
           'numberOfConsolePorts':'1',
        },
        'slot2':{
            'numberOfEthernetPorts':'50',
            'numberOfSerialPorts':'2',
            'numberOfConsolePorts':'1',
        },
        'slot3':{
            'numberOfEthernetPorts':'100',
            'numberOfSerialPorts':'20',
            'numberOfConsolePorts':'1',
        },
 }
}

1 个答案:

答案 0 :(得分:1)

好吧,我发现,每个新级别都必须以数组开头。

第一部分包含基本数据

var newSwitchData = new Object();
newSwitchData = {'switchBasicInfo': {}};
newSwitchData.switchBasicInfo['switchProperty'] = $(this)[0].value;

foreach循环中的动态部分

newSwitchData.portSlots = {};
newSwitchData.portSlots['slotId'] = {};
newSwitchData.portSlots['slotId']['placeHolder'] = $(this)[0].value;