2016-11-11 4 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, установленное значение «undefined».

Есть ли способ вернуть пустое значение, если значение не существует в JSON?

Например, если в формате JSON, screenLogoImage не определен, как я получаю

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

вернуть пустой (так, что библиотека, которая делает использование конфигурации игнорирует его и использует значение по умолчанию для этот атрибут)?

Любые рекомендации приветствуются.

+1

Что вы подразумеваете под «return empty»? – guest271314

+1

'skinData ['skinconfig'] [0] ['skin']. ScreenLogoImage || [ваше «пустое» значение] ' – Gavin

+0

Я имею в виду игнорировать недостающий ключ. Поэтому, если ключ не определен в JSON, тогда, когда я пытаюсь установить этот ключ, он просто игнорирует его, так как нет ключа (вместо того, чтобы возвращать undefined). – 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), это будет пустая строка, а не определено.

Смежные вопросы