Сериализация и десериализация JSON в полях модели - PullRequest
0 голосов
/ 18 марта 2020

Моя модель выглядит следующим образом:

public class Person
    {
        public Guid Id { get; set; } = Guid.NewGuid();

        public string Name { get; set; }
        public string Job { get; set; }

        [Column(TypeName = "jsonb")]
        public JObject Address { get; set; }

    }

Как видите, Address - это столбец jsonb . Прямо сейчас клиент должен превратить его содержимое в JSON, чтобы сервер его принял, и проанализировать содержимое JSON при получении его с сервера. Каков элегантный подход, чтобы сервер позаботился об этой работе?

1 Ответ

0 голосов
/ 19 марта 2020

Лучший подход, который я нашел, это добавить что-то подобное в мой DbContext

modelBuilder.Entity<Person>()
            .Property(e => e.Address)
            .HasConversion(
                v => JsonConvert.SerializeObject(v,
                    new JsonSerializerSettings {ContractResolver = new CamelCasePropertyNamesContractResolver()}),
                v => JsonConvert.DeserializeObject<JObject>(v,
                    new JsonSerializerSettings {ContractResolver = new CamelCasePropertyNamesContractResolver()})
            );
...