2012-07-08 36 views
0

被deserialiezed我有这样如何防止没有现成的JSON属性在JSON.NET

{ 
    car:100, 
    house:200, 
    bike:300 
} 

但有时一些属性的JSON响应的响应不来的。像这样的(房子丢失)

{ 
    car:100, 
    bike:300 
} 

我反序列化与JsonConvert.DeserializeObject<Test>(json);

这个测试模型

[JsonObject(MemberSerialization.OptIn)] 
public class Test 
{ 
    [JsonProperty(PropertyName = "car")] 
    public int Car{ get; set; } 

    [JsonProperty(PropertyName = "house")] 
    public int House{ get; set; } 

    [JsonProperty(PropertyName = "bike")] 
    public int Bike{ get; set; } 
} 

现在的问题: 在第二个例子,在房子缺少我仍然得到对象测试,以便将Propery House设置为0.

有什么办法可以使这个属性可选,我想我的模型没有缺少的属性。

其他认为 当我写这篇文章我想,也许这个简化版,使任何意义,也许模型是“模范”,为什么是在不同的instances..may不同的是是错了。

任何答案都会大大降低。 谢谢

回答

4

int的默认值为0.如果House是可选的,则使其为空。

[JsonProperty(PropertyName="house")] 
public int? House { get; set; } 
+0

谢谢!工作很好! – blackjid 2012-07-08 15:23:30

1

改变你的属性是nullable类型 - 例如int? House { get; set; }