C# Json.NET反序列化属性,而不反序列化其上的父对象
我正在尝试使用以下JSON:C# Json.NET反序列化属性,而不反序列化其上的父对象,c#,json.net,C#,Json.net,我正在尝试使用以下JSON: { “标题”:“字符串”, “说明”:“字符串”, “日期”:“2021-04-19T01:05:38.000Z”, “图像”:“url”, “图像”:[ “url1”, “url2” ], “属性”:{ “电话品牌”:“x”, “电话运营商”:“y”, “forsaleby”:“z”, “价格”:12345, “地点”:“地点”, “类型”:“提供” }, “url”:“列表的url” } 并将其转换为C#对象: 公共类列表{ [JsonProperty(“所有
{
“标题”:“字符串”,
“说明”:“字符串”,
“日期”:“2021-04-19T01:05:38.000Z”,
“图像”:“url”,
“图像”:[
“url1”,
“url2”
],
“属性”:{
“电话品牌”:“x”,
“电话运营商”:“y”,
“forsaleby”:“z”,
“价格”:12345,
“地点”:“地点”,
“类型”:“提供”
},
“url”:“列表的url”
}
并将其转换为C#对象:
公共类列表{
[JsonProperty(“所有权”)]
公共字符串标题{get;set;}
[JsonProperty(“描述”)]
公共字符串说明{get;set;}
[JsonProperty(“日期”)]
公共日期时间?日期{get;set;}
[JsonProperty(“图像”)]
公共字符串图像{get;set;}
[JsonProperty(“图像”)]
公共字符串[]图像{get;set;}
[JsonProperty(“url”)]
公共字符串Url{get;set;}
[JsonProperty(“价格”)]
公共十进制价格{get;set;}
[JsonProperty(“locationId”)]
public int LocationId{get;set;}
[JsonProperty(“类别”)]
public int CategoryId{get;set;}
[JsonProperty(“sortByName”)]
公共字符串SortByName{get;set;}
[JsonProperty(“q”)]
公共字符串Q{get;set;}
[JsonProperty(“位置”)]
公共字符串位置{get;set;}
[JsonProperty(“类型”)]
公共字符串类型{get;set;}
[JsonProperty(“forsaleby”)]
SALEBY{get;set;}的公共字符串
[JsonProperty(“履行”)]
公共字符串实现{get;set;}
[JsonProperty(“付款”)]
公共字符串支付{get;set;}
[JsonProperty(“电话品牌”)]
公共字符串?PhoneBrand{get;set;}
[JsonProperty(“电话运营商”)]
公共字符串?PhoneCarrier{get;set;}
}
我的问题是,我试图反序列化属性,如
price
和phonebrand
,但这些属性位于JSON中的一个对象下。因此,当我尝试像这样反序列化它们时,这些属性找不到,并且被设置为null。我如何反序列化这些属性而不改变我的C#类以包含属性
类?我之所以想这样做,是因为我认为与我正在使用的JSON相比,它是一种更干净/更好的设计。我建议两种方法,它们非常明确,便于下一个查看代码的开发人员遵循
两类
创建用于反序列化的中间dto类,然后从该中间对象创建业务逻辑对象
var withAttributes = Deserialise<ListingDto>();
var flatObject = new Listing(withAttributes);
我会选择第二个选项。我认为有一种方法可以使用JsonProperty或类似的工具来实现,但效果很好。泰!
public class Listing
{
public AttributesDto Attributes {get; set}
...
public string Url => Attributes.Url; // Maybe '?.Url'
}