2014-12-24 2 views
0

, когда я использовать Json.NET, я всегда отвечают некоторые проблемы, как, что:Как позволить Json.net вернуть новое значение T, если объект Deserialize имеет значение null?

List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(personsJson); 

Вы, ребята, знаете: Некоторое время, потому что ошибка сервера или любая другая проблема, возвращение JSON строка просто нуль значение.

, но когда personsJson является null значение. Json.net кина: System.ArgumentNullException

мне просто нужно это автоматически дать мне новый исходный объект, я имею в виду, когда personsJson является нулевого, торчу жим меня: нового список Person(); это будет более полезным, мне не нужно определять каждую строку json перед тем, как описать один за другим.

Я думал, что может быть, некоторые настройки могут это сделать, но не найдены.

ответ

5

Так почему бы не просто зарегистрироваться на null?

List<Person> persons = personsJson != null 
         ? JsonConvert.DeserializeObject<List<Person>>(personsJson) 
         : new List<Person>(); 

Если у вас слишком много кодов, как это, вы можете обобщить:

public static T Deserialize<T>(this string json) where T : new() 
{ 
    return json != null 
        ? JsonConvert.DeserializeObject<T>(json) 
        : new T(); 
} 


List<Person> persons = personsJson.Deserialize<List<Person>>(); 
+0

тоже есть много JsonConvert.DescrializeObject способ ....... – qakmak

+0

@qakmak смотрите мое обновление. –

+0

Использовать метод расширения - хорошая идея. это безопасно описать сейчас. Спасибо. – qakmak

1

Вы можете проверить переменную, прежде чем пытаться десериализации его:

public List<Person> DeserializePersons(string personsJson) 
{ 
    if (string.IsNullOrEmpty(personsJson)) 
    { 
     return new List<Person>(); 
    } 
    else 
    { 
     return JsonConvert.DeserializeObject<List<Person>>(personsJson); 
    } 
} 

Однако, вы можете хотите обрабатывать случай «без лиц», отличный от «ошибки, возникшей во время извлечения людей».

+0

но есть так много метода JsonConvert.DescrializeObject ....... – qakmak