1

我有一个 RESTful 网络服务,它接收 JSON 并使用 DataContractJsonSerializer 将其反序列化为 ac# 类,尽管这可以更改。

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

例如:

{
    "firstName" : "Martin"
}

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

但是,我找不到执行此操作的方法,因为我不知道如何区分未指定字段和应更新为 null 的字段

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

{}

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

{
    "firstName" : null
}

解决这个问题的最佳方法是什么?

4

2 回答 2

1

我认为您可以使用用一些随机字符串初始化的字段

public class TestClass
{
    public string firstName = "some string";
}

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

PS:如果您使用 DataContractJsonSerializer,请不要使用DataContractor属性DataMember

于 2012-05-25T06:44:41.243 回答
0

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

于 2012-05-25T06:26:55.277 回答