【问题标题】:Serialize and Deserialize JSON on model fields在模型字段上序列化和反序列化 JSON
【发布时间】:2020-06-29 20:24:00
【问题描述】:

我的模型如下所示:

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 内容时对其进行解析。让服务器处理这项工作的优雅方法是什么?

【问题讨论】:

  • OK,那么Person类是用来和服务器通信的吗?预计会有什么变化?在客户端还是服务器端?
  • @Hostel Person 类表示数据库表的模型。该表有一个需要 json 的“地址”列。我希望服务器自动处理列的 JSON 转换,而不是让客户端来做。这有意义吗?

标签: c# json postgresql .net-core entity-framework-core


【解决方案1】:

我发现的最佳方法是在我的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()})
            );

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 2015-09-01
    • 2022-01-06
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多