【问题标题】:Does .Net DataContract have to include all members from Json?.Net DataContract 是否必须包含 Json 的所有成员?
【发布时间】:2013-09-15 17:42:07
【问题描述】:

我正在使用 .Net 3.0 将两个不同的 json 字符串反序列化为一个 c# 类。这是一些示例 json:

{"studio" : "mystudio", "name" : "John Doe"}
{"studio_name" : "mystudio", "name" : "John Doe" }

请注意,json 字符串是不同的。我可以创建一个如下所示的类,将 studio 和 studio_name 作为 DataMembers 吗?:

    [DataContract]
    public class StudioMeta
    {
        [DataMember]
        public string Studio_Name { get; set; }
        [DataMember]
        public string Studio { get; set; }
    }

如果我只从每个 json 字符串中包含一个数据成员,它会正确反序列化吗?还是违法?

另外,如果我所做的只是反序列化,我是否需要 DataContractDataMember 修饰符?

【问题讨论】:

  • 您可能会考虑使用json.net,然后您就不必使用这些属性了。
  • 是的,我非常想要,但我不负责。

标签: c# .net json serialization datacontract


【解决方案1】:

MSDN documentation。您可以使用

[DataMember(IsRequired = true)]

字段(默认:false)和

[DataMember(EmitDefaultValue = false)]

属性。在您的情况下,序列化(反之亦然)应该可以正常工作。

【讨论】:

  • 什么是field (default: false)
  • 我的意思是 IsRequired 默认为 false。因此,如果 JSON 文本不包含该成员,.NET 仍将正确反序列化该对象。
  • 但是您将 IsRequired 设置为 true,这是否意味着它不在 JSON 文本中时会中断?
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 2013-08-21
  • 2013-06-22
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
相关资源
最近更新 更多