用Automapper(C#)将JObject转换为类的有效方法
我需要将JSON转换为自定义对象,我正在使用AutoMapper来实现。这是我的代码,目前有效:用Automapper(C#)将JObject转换为类的有效方法,c#,automapper,C#,Automapper,我需要将JSON转换为自定义对象,我正在使用AutoMapper来实现。这是我的代码,目前有效: public string json = @" { 'index': 'dagger', 'name': 'Dagger', 'equipment_category': 'weapon' }" public class Equipment { public string Index { get; set; } public string Name { get; set; }
public string json = @"
{
'index': 'dagger',
'name': 'Dagger',
'equipment_category': 'weapon'
}"
public class Equipment
{
public string Index { get; set; }
public string Name { get; set; }
public string EquipmentCategory { get; set; }
}
public Equipment Convert()
{
var config = new MapperConfiguration(config =>
{
config.CreateMap<JObject, Equipment>()
.ForMember(dest => dest.Index, opt => opt.MapFrom(src => src["index"])
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src["name"])
.ForMember(dest => dest.EquipmentCategory, opt => opt.MapFrom(src => src["equipment_category"])
}
var mapper = config.CreateMapper();
var result = mapper.Map<Equipment>(JObject.Parse(json));
return result;
}
公共字符串json=@”
{
“索引”:“匕首”,
“姓名”:“匕首”,
“装备类别”:“武器”
}"
公共级设备
{
公共字符串索引{get;set;}
公共字符串名称{get;set;}
公共字符串设备类别{get;set;}
}
公共设备转换()
{
变量配置=新的MapperConfiguration(配置=>
{
config.CreateMap()
.ForMember(dest=>dest.Index,opt=>opt.MapFrom(src=>src[“Index”]))
.ForMember(dest=>dest.Name,opt=>opt.MapFrom(src=>src[“Name”]))
.ForMember(dest=>dest.EquipmentCategory,opt=>opt.MapFrom(src=>src[“设备”类别])
}
var mapper=config.CreateMapper();
var result=mapper.Map(JObject.Parse(json));
返回结果;
}
这样做的缺点是我必须为对象中的每个属性创建一个
FormMember
规则。有人知道更有效的方法吗?您不需要Automapper将json转换为POCO(设备类)。使用JsonConvert.DeserializeObject(json)
以及JsonPropertyAttribute
。使用Newtonsoft反序列化程序将为您处理“映射”
public class Equipment
{
[JsonProperty("index")]
public string Index { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("equipment_category")]
public string EquipmentCategory { get; set; }
}
反序列化到POCO
string json = @"
{
'index': 'dagger',
'name': 'Dagger',
'equipment_category': 'weapon'
}"
var equipment = JsonConvert.DeserializeObject<Equipment>(json);
stringjson=@”
{
“索引”:“匕首”,
“姓名”:“匕首”,
“装备类别”:“武器”
}"
var设备=JsonConvert.DeserializeObject(json);
一旦您有了一个POCO实例,Automapper就可以方便地将这个类映射到另一个POCO
var result = mapper.Map<EquipmentDto>(equipment);
var result=mapper.Map(设备);
Newtonsoft序列化和反序列化JSON
将json转换为POCO(设备类)不需要Automapper。使用
JsonConvert.DeserializeObject(json)
以及JsonPropertyAttribute
。使用Newtonsoft反序列化程序将为您处理“映射”
public class Equipment
{
[JsonProperty("index")]
public string Index { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("equipment_category")]
public string EquipmentCategory { get; set; }
}
反序列化到POCO
string json = @"
{
'index': 'dagger',
'name': 'Dagger',
'equipment_category': 'weapon'
}"
var equipment = JsonConvert.DeserializeObject<Equipment>(json);
stringjson=@”
{
“索引”:“匕首”,
“姓名”:“匕首”,
“装备类别”:“武器”
}"
var设备=JsonConvert.DeserializeObject(json);
一旦您有了一个POCO实例,Automapper就可以方便地将这个类映射到另一个POCO
var result = mapper.Map<EquipmentDto>(equipment);
var result=mapper.Map(设备);
Newtonsoft序列化和反序列化JSON
如果出于某种原因您已经有了一个作业对象而不是字符串,那么
obj.ToObject()
如果出于某种原因您已经有了一个作业对象而不是字符串,那么obj.ToObject()