Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JsonIgnore不适用于序列化中的MemberSerialization.Fields_C#_Serialization_Json.net - Fatal编程技术网

C# JsonIgnore不适用于序列化中的MemberSerialization.Fields

C# JsonIgnore不适用于序列化中的MemberSerialization.Fields,c#,serialization,json.net,C#,Serialization,Json.net,我正试图使用MemberSerialization枚举中的字段,用Newtonsoft.Json序列化一个对象 这是添加[JsonObjectMemberSerialization.Fields]的类: [JsonObject(MemberSerialization.Fields)] public class Employee { [JsonIgnore] public int ID { get; set; }

我正试图使用MemberSerialization枚举中的字段,用Newtonsoft.Json序列化一个对象

这是添加[JsonObjectMemberSerialization.Fields]的类:

 [JsonObject(MemberSerialization.Fields)] 
        public class Employee {
            [JsonIgnore]
            public int ID { get; set; }
            [JsonProperty]
            public string Name { get; set; } 
            public char Gender { get; set; }
            [JsonProperty]
            public string WorkPhone { get; set; }
            private string Address { get; set; }
            [JsonProperty]
            public List<string> Skills { get; set; }         
        }
然后这个功能就可以工作了。 对此有什么想法吗?为什么会这样?我在Newtonsoft.Json文档中找不到它

但是,JsonIgnore属性可以很好地用于

[JsonObject(MemberSerialization.OptOut)] 
and
[JsonObject(MemberSerialization.OptIn)] 

当您使用自动属性(即{get;set;})时,编译器将创建一个只能通过属性的get和set访问器访问的私有匿名备份字段

您在这里看到的是那些私有支持字段,比如说,所有公共和私有字段都是序列化的


由于您的所有属性都是公共的,并且您的类中没有字段,为什么还要设置该值?

当您使用自动属性,即{get;set;}时,编译器会创建一个只能通过属性的get和set访问器访问的私有匿名备份字段

您在这里看到的是那些私有支持字段,比如说,所有公共和私有字段都是序列化的


由于您的所有属性都是公共的,并且您的类中没有字段,为什么还要设置该值?

即使我有字段和自动属性,我也希望只序列化字段。但是,自动属性也存在。我们只是尝试了一下,不希望序列化文件中有任何属性数据。现在很清楚为什么库尤的后场在那里。谢谢

即使我有字段和自动属性,我也希望只序列化字段。但是,自动属性也存在。我们只是尝试了一下,不希望序列化文件中有任何属性数据。现在很清楚为什么库尤的后场在那里。谢谢

在C7.3中,您应该能够将[field:JsonIgnore]添加到属性中,以将秘密支持字段标记为已忽略。请参阅和。在C7.3中,您应该能够将[field:JsonIgnore]添加到属性中,以将秘密支持字段标记为已忽略。见和。
[
  {
    "<ID>k__BackingField": 1,
    "<Name>k__BackingField": "Igor",
    "<Gender>k__BackingField": "M",
    "<WorkPhone>k__BackingField": "78123456",
    "<Address>k__BackingField": "ul. Partizanski odredi, Skopje",
    "<Skills>k__BackingField": [
      "C#",
      "SQL Server"
    ]
  } 
]
//[JsonObject(MemberSerialization.Fields)] 
[JsonObject(MemberSerialization.OptOut)] 
and
[JsonObject(MemberSerialization.OptIn)]