当字符串为空时如何处理JSON.stringify

时间:2014-01-10 19:49:17

标签: javascript json

我正在尝试处理数组中不存在的对象。

 var departureGate = JSON.stringify(data.flightStatuses[i].airportResources.departureGate);

因此,当javascript代码到达此处时,它会因为在它尝试解析的实际字符串中没有任何内容而失败。我试过用“typeof”捕获它,但这也不起作用。我很难过。

因此,data.flightStatuses [i]数组存在,而不是.airportResources.departureGate。

我试图使用“typeof data.flightStatuses [i] .airportResources.departureGate”查看它是否存在。它仍然会崩溃。

alert (typeof data.flightStatuses[i])  // this comes back "object"
    alert (typeof data.flightStatuses[i].airportResources.departureGate)  // it dies...

3 个答案:

答案 0 :(得分:0)

应该像这样相当直接:

if (data.flightStatuses[i].airportResources.departureGate) {
   var departureGate = JSON.stringify(data.flightStatuses[i].airportResources.departureGate);
}

答案 1 :(得分:0)

您的问题似乎与airportResources有关,而与departureGate无关。

试试这个:

var departureGate = null,
    ar = data.flightStatuses[i].airportResources;
if(ar && 'departureGate' in ar){
    departureGate = JSON.stringify(ar.departureGate);
}

干杯

答案 2 :(得分:0)

您可以检查出发门是否完全被定义为属性,然后执行您想要的操作,例如:

if(data.flightStatuses[i].airportResources.hasOwnProperty('departureGate') {
    var departureGate = JSON.stringify(data.flightStatuses[i].airportResources.departureGate);
} else {
    var departuregate = null; // for example
}

此处有更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty