在循环中,我正在像这样创建JSON对象
JSONObject = {
"manufacturer": JSON.parse(object.deviceSpecificationJson[0]).manufacturer,
"model": JSON.parse(object.deviceSpecificationJson[0]).model,
"capacity": object.capacity[0],
// etc
}
但是当容量未定义时,节点会引发错误,我转换为json的XML中的某些设备可能在容量字段中不包含值。
即使字段未定义,如何告诉节点继续运行?
答案 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
}