.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; }
}