检测JSON中null属性和ignored属性之间的区别

时间:2012-05-25 06:10:58

标签: c# .net json rest datacontractjsonserializer

我有一个RESTful Web服务接收JSON,并使用DataContractJsonSerializer将其反序列化为c#类,但这可以更改。

其目的是更新资源上的字段

e.g:

{
    "firstName" : "Martin"
}

我不一定要更新所有字段,我希望找到一种方法来检测JSON中未指定的字段。

我无法找到这样做的方法,因为我不知道如何区分未指定的字段和应该更新为null的字段

例如:(不要更新任何字段):

{}

vs :(将firstName字段更新为null)

{
    "firstName" : null
}

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

我认为你可以使用一些用随机字符串

初始化的字段
public class TestClass
{
    public string firstName = "some string";
}

如果使用{"firstName" : null}反序列化,firstName将为null。如果使用{}反序列化,firstName将不会更改(some string

PS:如果您使用的是DataContractJsonSerializer,请不要使用DataContractDataMember属性

答案 1 :(得分:0)

我不确定是谁在使用您的网络服务,但这听起来像是您应该决定的事情,然后告诉您的消费者它是如何工作的(而不是依靠消费者做正确的事)。我认为将可以不能设置为null的所有字段都是明智的,因此每个实例的处理方式都不同。