Разрешение конфликтов между атрибутами и отношениями в JsonApiSerializerC#

Место общения программистов C#
Ответить
Anonymous
 Разрешение конфликтов между атрибутами и отношениями в JsonApiSerializer

Сообщение Anonymous »

Я работаю над созданием программы на C#, которая будет интегрироваться с API-интерфейсом, совместимым с json-api (документацию можно найти здесь). Для целей (де)сериализации я использую JsonApiSerializer библиотека, которая является одним из рекомендуемых вариантов в документации JSON:API.
К сожалению, я столкнулся с небольшой проблемой: сущность «Человек» Центра планирования включает в себя как атрибут с именем «пол», так и связь с именем «пол». Таким образом:
  • когда я определяю поле для одного, 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»