2016-11-11 104 views
-1

我希望有人給提供以下一些指導:解析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中不存在該值時,設置值爲「未定義」。

有沒有辦法返回一個空值,如果事實上該值不存在於JSON中?

例如,如果在JSON,沒有定義screenLogoImage,我怎麼

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

返回空(以便使採用上述結構,忽略它並使用默認值庫那個屬性)?

任何指導非常感謝。

+1

「返回空」是什麼意思? – guest271314

+1

'skinData ['skinconfig'] [0] ['skin']。screenLogoImage || [你的'空'價值]' – Gavin

+0

我的意思是忽略丟失的關鍵。所以如果一個鍵沒有在JSON中定義,那麼當我嘗試設置該鍵時,它會忽略它,因爲沒有鍵(而不是返回未定義)。 – ymdahi

回答

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, 
    ... 
} 
+0

謝謝,這可能是最簡單的解決方案。幾個月前,我不必這樣做 - 如果關鍵的screenLogoUrl不存在於JSON中,那麼當我嘗試將它帶入數組時,它將被忽略。 我正在使用您概述的方法來定義默認值以防止出現空值。 – ymdahi

+1

你也可以使用Object.keys(data).forEach(function(key){...})' – Gavin

0

可以使用或操作,如果你想定義的東西,可能是不確定的時候給回退。

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

在這種情況下,如果它是未定義的(或false),這將是空字符串,而不是未定義。