Я пытаюсь сериализовать объект с помощью Newtonsoft.Json, используя поля из перечисления MemberSerialization.
Это класс, в который добавляется [JsonObject (MemberSerialization.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; }
}
// Основная часть:
Employee e1 = new Employee() {
ID = 1,
Name = "Igor",
Gender = 'M',
WorkPhone = "78123456",
Skills = new List<string>() { "C#", "SQL Server" }
};
string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
string path = @"..\JsonSerialization.json";
File.WriteAllText(path, json);
Сериализация дает вывод, который не ожидается:
[
{
"<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)]
тогда функционал работает.
Есть мысли по этому поводу, почему это так? Я не могу найти его в документации Newtonsoft.Json.
Однако атрибут JsonIgnore отлично работает с
[JsonObject(MemberSerialization.OptOut)]
and
[JsonObject(MemberSerialization.OptIn)]