К сожалению, я столкнулся с небольшой проблемой: сущность «Человек» Центра планирования включает в себя как атрибут с именем «пол», так и связь с именем «пол». Таким образом:
- когда я определяю поле для одного, Newtonsoft (это то, что JsonApiSerializer использует под капотом) паникует, потому что не может обработать другое;
- когда я пытаюсь определить поля для обоих, он паникует, потому что существует несколько свойств с одинаковым именем.
РЕДАКТИРОВАТЬ: По просьбе @dbc, вот минимальный воспроизводимый пример:
using Newtonsoft.Json;
using JsonApiSerializer.JsonApi;
public class Person {
public int Id {get; set;}
#region Using Attribute
// Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current
// JSON object (e.g. {"name":"value"}) into type 'System.String' because
// the type requires a JSON primitive value (e.g. string, number, boolean, null)
// to deserialize correctly.
public string Gender {get; set;}
#endregion
#region Using Reference
// JsonApiSerializer.Exceptions.JsonApiFormatException: 'Expected to find
// json object at path 'data.attributes.gender' but found 'Female''
public Relationship Gender {get; set;} // Gender is the related entity's class.
#endregion
#region Using Both
[JsonProperty("gender")]
public string GenderAttribute { get; set; }
[JsonProperty("gender")]
public Relationship GenderRelationship { get; set; }
// Newtonsoft.Json.JsonSerializationException: 'A member with the name
// 'gender' already exists on 'PlanningCenterApi.RawData.People.Person'.
// Use the JsonPropertyAttribute to specify another name.'
#endregion
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... serializer
Мобильная версия