解析JSON,返回空而不是undefined

时间:2016-11-11 18:30:11

标签: javascript jquery json

我希望有人提供以下指导:

我正在使用类似的东西获取JSON:

$.getJSON(jsonPath, function(returnedData){
...
});

返回的对象看起来像这样:

...
"skin": {
  "elapsedTextColor": "#ffffff",
  "autoHideControls": "false",
  "autoplay": "false",
  "muted": "false",
   ...
}

我使用这样的数据:

...
skin : {
  screenLogoImage : skinData['skinconfig'][0]['skin'].screenLogoImage,
  screenLogoUrl : skinData['skinconfig'][0]['skin'].screenLogoUrl,
  ...
},

当JSON中不存在该值时,设置值为“undefined”。

如果JSON中不存在该值,是否有办法返回空值?

例如,如果在JSON中没有定义screenLogoImage,我该如何获取

skinData['skinconfig'][0]['skin'].screenLogoImage

返回空(以便使用配置的库忽略它并使用该属性的默认值)?

非常感谢任何指导。

2 个答案:

答案 0 :(得分:1)

您可以使用|| OR运算符

skin : {
  screenLogoImage : skinData['skinconfig'][0]['skin'].screenLogoImage || settings.screenLogoImage,
  screenLogoUrl : skinData['skinconfig'][0]['skin'].screenLogoUrl || settings.screenLogoUrl,
  ...
}

for..in循环

var data = {... screenLogoImage: undefined};
var settings = {screenLogoImage:"/path/to/resource/"} 
for (var key in data) {
 if (data[key] === undefined) data[key] = settings[key]
}

skin : {
  screenLogoImage : skinData['skinconfig'][0]['skin'].screenLogoImage,
  screenLogoUrl : skinData['skinconfig'][0]['skin'].screenLogoUrl,
  ...
}

答案 1 :(得分:0)

如果要在定义可能未定义的内容时给出后备,则可以使用or运算符。

var screenLogoImage = skinData['skinconfig'][0]['skin'].screenLogoImage || "";

在这种情况下,如果它未定义(或false),则它将是空字符串而不是未定义。