c# - 如何将类实例转换为 JsonDocument?

标签 c# entity-framework asp.net-core npgsql

假设我们有一个如下所示的实体类:

public class SerializedEntity
{
    public JsonDocument Payload { get; set; }

    public SerializedEntity(JsonDocument payload)
    {
        Payload = payload;
    }
}

根据 npsql这会生成一个包含 payload 列的表类型 jsonb对于这个类是正确的。

现在我想做的是获取任何类实例并将其存储为 payload在此表中,例如:
public class Pizza {
    public string Name { get; set; }
    public int Size { get; set; }
}

然后应该可以作为具有以下结构的对象进行检索:
{Name: "name", Size: 10}

所以我需要这样的东西:
var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(someConverter.method(pizza))

最佳答案

System.Text.Json这有点尴尬,但可能:

using System.Text.Json;
using System.Text.Json.Serialization;

var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(JsonDocument.Parse(JsonSerializer.Serialize(pizza)));

自(我认为)v3.0 以来,它已内置于 dotnet 核心,因此您不需要任何额外的 3rd 方库。只是不要忘记 using s。

不过,可能有一些技巧可以使解析效率更高一些(使用异步 API,也许或者像 Magnus 建议的那样,通过使用 SerializeToUtf8Bytes 序列化为二进制文件)。

我找不到任何直接来自 T 的方法或 objectJsonDocument . 我无法相信这是不可能的。如果您知道这是如何工作的,请发表评论或添加您的答案。

关于c# - 如何将类实例转换为 JsonDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60989709/

相关文章:

c# - 我是否必须在所有项目中引用 Entity Framework 6 dll? (不仅是我的 DAL)

c# - IdentityServer4 调试消息 AuthenticationScheme : "idsrv" was not authenticated

C# 从嵌套的 if 语句返回结果

c# - Entity Framework - 添加 75k 行需要多长时间?

c# - 生成包含ICollection和List之间比较的Where子句,而不执行任何查询

c# - 获取加载程序集的根命名空间(程序集命名空间)

c# - Azure Web PubSub 和服务器之间的身份验证

iis - IIS中ASP.NET Core应用程序内部的虚拟目录

c# - IQueryable Count 方法需要更长的时间来执行

c# - 拒绝 HTTP 动词的 MVC3 自定义属性