2014-09-29 24 views
33

ayrıştırma JSON.NET verilerine sırasında hata ayrıştırma Ignore:Ben önceden tanımlanmış veri yapısına sahip bir nesne var

public class A 
{ 
    public string Id {get;set;} 
    public bool? Enabled {get;set;} 
    public int? Age {get;set;} 
} 

ve JSON ben olumlu yönde JSON hatayı işlemek istiyorum

{ "Id": "123", "Enabled": true, "Age": 23 } 

olması gerekiyordu ve sunucu tanımlanmış veri türleri için beklenmedik değerler döndürdüğünde, onu yoksayılmasını ve varsayılan değerin ayarlanmasını istiyorum (boş).

Şu anda JSON JSON okuyucu istisna alıyorum kısmen geçersiz olduğunda:

{ "Id": "123", "Enabled": "NotABoolValue", "Age": 23 } 

Ve hiç bir nesneyi alamadım.

new A() { Id = "123", Enabled = null, Age = 23 } 

ve ayrıştırma uyarı mümkünse: İstediğim bir nesne elde etmektir. JSON.NET ile başarmak mümkün mü? HandleDeserializationError aşağıdaki yöntemdir

var a = JsonConvert.DeserializeObject<A>("-- JSON STRING --", new JsonSerializerSettings 
    { 
     Error = HandleDeserializationError 
    }); 

:

cevap

61

kullanın aşağıdaki kodu seri kaldırma hataları idare edebilmek için hatalar olduğu

public void HandleDeserializationError(object sender, ErrorEventArgs errorArgs) 
{ 
    var currentError = errorArgs.ErrorContext.Error.Message; 
    errorArgs.ErrorContext.Handled = true; 
} 

HandleDeserializationError defalarca olarak çağrılacak json dizesinde. Hatanın neden olduğu özellikler başlatılmayacaktır.

+1

sadece harika çalışıyor. Tam olarak aradığım şey bu! Teşekkürler –

+17

ErrorEventArgs'ın Newtonsoft.Json.Serialization.ErrorEventArgs olduğunu ve System.IO.ErrorEventArgs olduğunu unutmayın. –

+0

Mükemmel! Bu iş! – Yonedev

İlgili konular