.net - 将 JObject 转换为强类型对象

标签 .net json json.net

我正在使用 JsonConvert从这样的类中序列化和反序列化对象:

public class DbBulkRequest
{
    public DbEntity[] Updates { get; set; }
}

public class DbEntity
{
    public string Name { get; set; }
    public object Dto { get; set; }
}

当我反序列化时 Dto , 我得到一个类型为 JObject 的对象.在反序列化的时候,我想创建基于Dto的强类型对象.我可以创建对象;但是,我不知道填充它们的属性的好方法。我发现的最好的是这种奶酪球方法:

MyEntity e = JsonConvert.DeserializeObject<MyEntity>(JsonConvert.SerializeObject(dto));

什么是更有效的解决方案?

最佳答案

添加 TypeNameHandling

private readonly JsonSerializerSettings defaultSettings = new JsonSerializerSettings
    {
        Formatting = Formatting.Indented,
        TypeNameHandling = TypeNameHandling.Auto
    };

这是示例
private readonly JsonSerializerSettings defaultSettings = new JsonSerializerSettings
    {
        Formatting = Formatting.Indented,
        TypeNameHandling = TypeNameHandling.Auto
    };

[Fact]
public void Test()
{
    var entity = new DbEntity
        {
            Dto = new TestDto { Value = "dto" },
            Name = "Entity"
        };
    string serializedObject = JsonConvert.SerializeObject(entity, defaultSettings);
    var deserializedObject = JsonConvert.DeserializeObject<DbEntity>(serializedObjest, defaultSettings);
}

public class DbBulkRequest
{
    public DbEntity[] Updates { get; set; }
}

public class DbEntity
{
    public object Dto { get; set; }
    public string Name { get; set; }
}

public class TestDto
{
    public string Value { get; set; }
}

关于.net - 将 JObject 转换为强类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847052/

相关文章:

.net - 如何以编程方式操作任何 Windows 应用程序的通用对话框?

java - Java中如何解析下面的json?我尝试使用简单的 json 但出现空指针异常

javascript - 将字符串转换为嵌套的 JavaScript 对象或 JSON

c# - Newtonsoft TypeNameHandling.all 具有基本命名空间检查安全吗?

c# - 将 JSON 对象反序列化为数组

c# - 如果我的模型发生变化,如何在 EF 中重新创建数据库?

c# - 执行 IEnumerable 方法

jquery - 在 jQuery 中将对象作为函数参数传递

c# - (JSON.NET) RuntimeBinderException 访问动态 JObject(在一台 PC 上工作,在另一台上失败)

c# - Owin auth - 如何获取请求身份验证 token 的客户端的 IP 地址