Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将作业对象转换为强类型对象_.net_Json_Json.net - Fatal编程技术网

.net 将作业对象转换为强类型对象

.net 将作业对象转换为强类型对象,.net,json,json.net,.net,Json,Json.net,我正在使用jsonvert对类中的对象进行序列化和反序列化,如下所示: 公共类DbBulkRequest { public DbEntity[]更新{get;set;} } 公共类DbEntity { 公共字符串名称{get;set;} 公共对象Dto{get;set;} } 当我反序列化Dto时,我得到一个类型为JObject的对象。在反序列化时,我希望基于Dto创建强类型对象。我可以创建对象;但是,我不知道有什么好方法可以填充它们的属性。我发现最好的方法是奶酪球法: MyEntity e=

我正在使用
jsonvert
对类中的对象进行序列化和反序列化,如下所示:

公共类DbBulkRequest
{
public DbEntity[]更新{get;set;}
}
公共类DbEntity
{
公共字符串名称{get;set;}
公共对象Dto{get;set;}
}
当我反序列化
Dto
时,我得到一个类型为
JObject
的对象。在反序列化时,我希望基于
Dto
创建强类型对象。我可以创建对象;但是,我不知道有什么好方法可以填充它们的属性。我发现最好的方法是奶酪球法:

MyEntity e=JsonConvert.DeserializeObject(JsonConvert.SerializeObject(dto)); 什么是更有效的解决方案?

添加

下面是一个例子

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; }
}
private readonly JsonSerializerSettings defaultSettings=new JsonSerializerSettings
{
格式化=格式化。缩进,
TypeNameHandling=TypeNameHandling.Auto
};
[事实]
公开无效测试()
{
var实体=新的DbEntity
{
Dto=newtestdto{Value=“Dto”},
Name=“实体”
};
string serializedObject=JsonConvert.SerializeObject(实体,默认设置);
var deserializedObject=JsonConvert.DeserializeObject(SerializedJest,defaultSettings);
}
公共类数据库请求
{
public DbEntity[]更新{get;set;}
}
公共类DbEntity
{
公共对象Dto{get;set;}
公共字符串名称{get;set;}
}
公共类TestDto
{
公共字符串值{get;set;}
}

我不认为这更有效,但至少更可读(我认为)
MyEntity e=JObject.FromObject(dto.ToObject()
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; }
}