2016-12-09 9 views
0

У меня есть модель, созданная для десериализации сказать,Игнорировать отсутствующие поля в то время как десериализация используя newtonsoft

class Object 
{ 
    public string prop1 {get; set} 
    public string prop2 {get; set} 
} 

Теперь это будет работать только тогда, когда мой JSONstring содержит как поля, т.е.

{ 
    "prop1" : "value prop1", 
    "prop2" : "value prop2" 
} 

Но это не удастся если у меня есть только одно свойство в JSON, то есть

{ 
    "prop1" : "value1" 
} 

как я десериализую, когда re является отсутствующим свойством и делает его опцией.

+1

... так что мы до сих пор не знаю, что не удается - код, как это предусмотрено не подведет. Кроме того, конечно, он даже не компилируется (отсутствующие точки с запятой после 'set'). Чтобы иметь возможность помочь, нам нужен пример, который: a) компилирует и b) терпит неудачу. –

+0

* «но это не удастся» *, это не подведет. В приведенном здесь примере он будет десериализоваться без каких-либо проблем. И когда есть ошибка, может быть хорошей идеей поделиться этой ошибкой. – Jim

+2

[Отлично работает для меня] (https://dotnetfiddle.net/EIlnJk). Можете ли вы создать [MCVE] (http://stackoverflow.com/help/mcve), который показывает ошибку? –

ответ

0

Вы можете пойти на Dynamic

dynamic stuff = JsonConvert.DeserializeObject("{"prop1" : "value prop1","prop2" : "value prop2"}"); 
string p1 = stuff.prop1; 
string p2 = stuff.prop2; 

или Newtonsoft.Json.Linq

dynamic stuff = JObject.Parse("{"prop1" : "value1"}"); 
string p1 = stuff.prop1; 
+0

Привет @Vinodh вы можете поддержать ответ, если он помог, и если этот ответ разрешил ваш вопрос, пожалуйста, рассмотрите [его принятие] (http://meta.stackexchange.com/questions/5234/how-does -прихват-ответ-работа), щелкнув галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. –