Игнорировать свойство при преобразовании объекта в строку json - PullRequest
0 голосов
/ 01 октября 2019

Итак, у меня есть REST API, который работает с JSON на основе обмена OData. В типе OData есть свойство ID, которое я хочу прочитать, чтобы я мог проверить его. Однако, когда я хочу записать обратно на веб-сервер, свойство ID не должно присутствовать в ответной строке JSON. Так что это должно быть свойство только для записи, но простое изменение свойства только на запись не позволяет проверить, какое значение имеет это свойство.

Например, я создаю новый продукт:

Public Class Product
  Public property ID as integer
  Public property Title as string
End class

GET-ответ:

{
  "ID" = 1,
  "Title" = "Cool product!"
}

POST Неправильно:

{
  "ID" = 1, <---- ignore this value
  "Title" = "Cool product! Changed!"
}

POST Должно быть:

{
  "Title" = "Cool product! Changed!"
}

Веб-сервер использует OData

Использование атрибута JsonIgnore не исправляет его, поскольку значение ответа REST не сериализуется.

Это для WPF, а не ASP.Net

1 Ответ

1 голос
/ 01 октября 2019

JSON.NET поддерживает сериализацию условного свойства , используя метод, который возвращает bool и имеет то же имя, что и свойство с префиксом ShouldSerialize:

public class Product
{
    public int Id { get; set; }
    public string Title { get; set; }

    public bool ShouldSerializeId() => false;

}
...