在Node.js循环中创建JSON对象-节点在未定义的对象上停止

时间:2019-02-02 04:35:11

标签: javascript node.js

在循环中,我正在像这样创建JSON对象

JSONObject = {
   "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
   "model": JSON.parse(object.deviceSpecificationJson[0]).model,
   "capacity": object.capacity[0],
   // etc
}

但是当容量未定义时,节点会引发错误,我转换为json的XML中的某些设备可能在容量字段中不包含值。

即使字段未定义,如何告诉节点继续运行?

4 个答案:

答案 0 :(得分:1)

在JavaScript中,您可以在object.capacity上使用三元运算符,如下所示: object.capacity ? object.capacity[0] : null。这将检查object.capacity是否存在,如果存在,则执行?之后的行,如果不存在,则执行:之后的行。

更一般而言,这就是您使用三元运算符{condition} ? {if true} : {otherwise}

的方式

另一种选择是定义一个函数,该函数检查object.capacity并返回null或想要对象属性具有的默认值(如果不存在)。

我通过以下更改修改了您的示例:

JSONObject = {
    "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
    "model": JSON.parse(object.deviceSpecificationJson[0]).model,
    "capacity": object.capacity ? object.capacity[0] : null,
    // null can be replaced with the value you want it to show if the property does not exist
    // like 0, or an empty string ''
 }

答案 1 :(得分:0)

您需要设置一个条件来检查undefined

JSONObject = {
  "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
  "model": JSON.parse(object.deviceSpecificationJson[0]).model,
  "capacity": object.capacity[0]!= undefined ? object.capacity[0]: 'your static value for undefined capacity like null' ,
  // etc
}

答案 2 :(得分:0)

您可以有条件地将capacity添加到JSONObject中,如下所示:

JSONObject = {
   "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
   "model": JSON.parse(object.deviceSpecificationJson[0]).model,
   // etc
}
if(object.capacity[0]) JSONObject["capacity"] = object.capacity[0]

或者,如果您只想将capacity设置为0GB(如果不存在),则可以执行以下操作:

JSONObject = {
   "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
   "model": JSON.parse(object.deviceSpecificationJson[0]).model,
   "capacity": object.capacity[0] || '0GB',
   // etc
}

答案 3 :(得分:0)

我想到的最简单的方法是使用&& and ||

JSONObject = {
   "manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
   "model": JSON.parse(object.deviceSpecificationJson[0]).model,
   "capacity": (object && object.capacity[0]) || 'value in case object.capacity is undefined',
   // etc
}