Разный набор полей для разных функций
Есть две функции, которые обращаются к API. Одна с методом POST, вторая - PATCH.
Для обеих используется один класс, который включает поля
public class Attribute
{
[JsonProperty]
public string attribute_name { get; set; }
[JsonProperty]
public string attribute_value { get; set; }
[JsonProperty]
public string value { get; set; }
}
Не обращайте внимание на нейминг, я вот такой ленивый человек и просто забил на это пока.
При отправке данных в виде json с методом POST я просто собираю данные и устанавливаю контент
var content = JsonConvert.SerializeObject(attribute); // attribute - объект класса Attribute
Для обновления записи я хочу использовать тот же самый класс, но хочу исключить поле attribute_value и отправлять только value и attribute_name. Поскольку я получаю объект со всеми полями, я не могу установить свойство NullValueHandling.Ignore, поскольку оно точно будет не нулевым. Я не могу использовать [JsonIgnore], поскольку этот же самый класс используется для метода POST.
Есть готовый объект, можно ли указать поле класса, которое я хочу не включать в json при сериализации? Удалить из объекта?
Ответы (1 шт):
Решил пока так
сам класс
[JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
public class Attribute
{
[JsonProperty]
public string attribute_name { get; set; }
[JsonProperty]
public string? attribute_value { get; set; }
[JsonProperty]
public string value { get; set; }
}
и в логике обнуляю ненужное свойство
attribute.attribute_value = null;
var content = JsonConvert.SerializeObject(attribute);
На выходе имеем json без ненужной пары ключ:значение.
Кидайте помидорами, если такое решение не верно.