C# JsonIgnore不适用于序列化中的MemberSerialization.Fields
我正试图使用MemberSerialization枚举中的字段,用Newtonsoft.Json序列化一个对象 这是添加[JsonObjectMemberSerialization.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; }
[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)]