使用newtonsoft在反序列化时忽略丢失的字段

时间:2016-12-09 07:08:20

标签: c# json.net deserialization

我为反序列化创建的模型说,

  public void onItemSelected(AdapterView parent, View view, int position, long id) {


    p1.setSelection(position);
    }

现在只有当我的JSONstring包含两个字段,即

时,这才有效
class Object 
{
     public string prop1 {get; set}
     public string prop2 {get; set}
}

但如果我只有一个JSON属性,那么这将失败,即

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

如何在缺少属性时进行反序列化并使其成为选项。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

此代码按原样工作(设置后缺少分号)。

如果您想在这种情况下出现错误,请使用

[JsonProperty(Required = Required.Always)]  或[JsonProperty(Required = Required.DisallowNull)]