将json转换为xml并删除空字符串

时间:2015-08-21 23:08:51

标签: javascript json xml node.js parsing

我将json文件转换为xml文件,在我的json文件中我有:

"settingsData": { 
    "settingsname": "",
    "username": "Dave",
    "password": "",
    "domain": "Benji",
}

我的输出是:

 <data name="settingsname" value=""/>
 <data name="username" value="Dave"/>
 <data name="password" value=""/>
 <data name="domain" value="Benji"/>

这是我的功能:

var settings = [];

function extractData(data, settingsData){
    settings.push({
        name: 'settingsname',
        value: data.settingsname
    });
    settings.push({
        name: 'username',
        value: data.username
    });
    settings.push({
        name: 'password',
        value: data.password
    }); 
    settings.push({
        name: 'domain',
        value: data.domain
    }); 
    return settings;
}

输出必须是:

<data name="username" value="Dave"/>
<data name="domain" value="Benji"/>

我的问题是如何删除空字符串或如何检查它是否为空字符串然后不将其添加到数组中?

我使用了类似下面的if语句,但它不起作用:

 if (settingsData.settingsname !== ""){
    settings.push({
        name: 'settingsname',
        value: data.settingsname
    });
 }

提前致谢!

2 个答案:

答案 0 :(得分:1)

只需遍历数组并检查属性是否存在:

var settingsData = {
    settingsname: '',
    username: 'Dave',
    password: '',
    domain: 'Benji'
};

function extractData(data, settingsData) {
    var settings = [];
    for (var key in settingsData ) {
       if (data.hasOwnProperty(key) && settingsData[key].length > 0) {
           settings.push({name: key, value: data[key]});
       }
    }
    return settings;
}

答案 1 :(得分:0)

jsfiddle

var settingsData = {

    settingsname: '',
    username: 'Dave',
    password: '',
    domain: 'Benji'
};

function extractData(){

    var arr = [];

    for (var key in settingsData ) {
       if (settingsData.hasOwnProperty(key)) {
           if (settingsData[key]) arr.push(settingsData[key]);
       }
    }

    console.log(arr);
}

extractData(); // ["Dave", "Benji"]