2016-01-11 3 views
0

У меня есть файл Json, содержащий несколько объектов списка в родительском. В моем случае родительский объект представляет собой список с именем data. Внутри данных у меня есть несколько элементов, которые содержат такие данные, как имя, статус, название ... Вложенные в каждый из этих элементов - это другой список с именем «категории». Я пишу значение этих элементов в класс, используя приведенный здесь фрагмент кода:Как обрабатывать отсутствующий вложенный список в Json, который содержит несколько списков

var dict = jss.Deserialize<Dictionary<string, dynamic>>(json); 
for (int i = 0; i < dict.Values.Sum(x => x.Count); i++) 
{ 
    foreach (var item in dict) 
    { 
     eSummary summary = new eSummary(); 
     summary.evidenceId = (dict["data"][i]["evidenceId"]); 
     summary.idExternal = (dict["data"][i]["idExternal"]); 
     //summary.category = (dict["data"][i]["categories"][0]); 
     summary.dateUploaded = Convert.ToDateTime((dict["data"][i]["dateUploaded"])); 
    } 
} 

Все в порядке, пока не достигнет записи, которая не имеет пары значений в списке категорий. По-видимому, если в списке категорий нет элементов, список не включается в родительские данные json, и мой код разбивается на строку, которую я прокомментировал.

Итак, моя проблема в том, как я могу обрабатывать ситуацию с отсутствующим списком объектов из родительского списка?

Прямо сейчас я передаю его с помощью блока catch catch с ничем в блоке catch, но решил, что должен быть лучший способ.

+0

Пожалуйста см [ «Должны ли вопросы включают„метки“? В своих названиях»] (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), где консенсус «нет, они не должны»! –

+0

Хорошо, спасибо, что я буду помнить, что в следующий раз, когда я отправлю вопрос – Perry

+0

, вы должны сначала проверить null, и если это так, установите значение по умолчанию, которое вы хотели бы в этом случае. Так, если, например, вы хотите, чтобы категория была установлена ​​в "", если в родительских данных нет списка категорий, вы должны написать: 'summary.category = dict [" data "] [i] [" categories "] == ноль ? "": dict ["data"] [i] ["categories"] [0] ' – ThomasC

ответ

0

я справилась с этой проблемой, используя поймать блок TRY следующим образом:

try 
{ 
    Data.Category = (dict["data"][i]["categories"][0]); 
} 
catch (Exception) 
{ 
    Data.Category = ""; 
}