【发布时间】:2021-07-20 11:32:21
【问题描述】:
我在 Postgres 中有一个 JSONB 列,其中包含一个字典,其中的字符串键和值可以是字符串或数字。所以一个例子如下:
{
"test": "string",
"test2": 123,
"test3": 7.2
}
如果我将其作为Dictionary<string, object> 放在 EF Core 模型上,我可以将其保存在数据库中而不会出现问题,一切都会自动运行。但如果我检索它,默认情况下 Newtonsoft JSON 不会将其序列化为有用的东西,我只会得到一些 ValueKind 属性并且缺少实际值:
{
"test": {
"valueKind": 3
},
"test2": {
"valueKind": 4
},
"test3": {
"valueKind": 4
}
}
我怀疑我必须为此编写一个自定义序列化程序,但我认为这样的事情在 Web API 中很常见,因此会有更方便的方法。但到目前为止,我找不到任何可以修复此转换的设置。
有没有办法让 ASP.NET 和 Newtonsoft 将 JSONB 列序列化回我放入的那种格式?哪些键是数字,哪些是字符串的信息仍然在 JSON 中,所以在这里输出一些合理的东西应该不需要我的帮助。
或者,有没有比Dictionary<string, object>更好的方法来处理这种数据?
【问题讨论】:
-
我正在使用自定义转换器来转换数据 数据库。它们非常有用。实体有“HasConversion”。检查docs.microsoft.com/cs-cz/ef/core/modeling/…
标签: c# asp.net-core entity-framework-core json.net