public class CarsModel
{
public int OnStock { get; set; }
public int Rented { get; set; }
public List<CarInfo> Cars { get; set; }
}
public class CarInfo
{
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public CarDetails Details { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public ServiceInfo ServiceInfo { get; set; }
[JsonProperty( NullValueHandling = NullValueHandling.Ignore)]
public MarketingInfo MarketingInfoDetails { get; set; }
}
根据场景,此汽车属性将具有不同的表示形式(MarketingInfo 或 CarDetails 或 ServiceInfo,但不能同时使用两者)。案例 1:营销信息
"onStock": 11,
"rented": 2,
"cars": [{
"carId": 1,
"MarketingInfo": {
"contactPerson": "John Smith"
}, ...
}]
案例 2:ServiceInfo 和 CarDetails
"onStock": 11,
"rented": 2,
"cars": [{
"ServiceInfo": {
"lastService": "2021-01-01"
},
"CarDetails": {
"carId": 1,
"lastOwner": "Mister Clark"
}, ...
}]
这就是我填充我的回复的方式
var carsModel = new CarsModel{
OnStock = 11,
Rented = 2
};
foreach (var car in cars)
{
carsModel.Cars.Add(new CarsModel
{
MarketingInfoDetails = new MarketingInfo
{
ContactPerson = "John Smith",
....
}
});
}
在上面的模型表示中,我的反应不是我想要的(因为它包含MarketingInfoDetails词)
Response:
{
"data" :[{
"onStock": 11,
"rented": 2,
"cars": [
{
"marketingInfoDetails": {
"contactPerson": "John Smith",
...
}
}]
}]
}
我想在没有名称“marketingInfoDetails”的情况下被代表
{
"data" : [{
"onStock" : 11,
"rented" : 2,
"cars" : [{ "contactPerson" : "John Smith"}]
}]
}
如果您认为可以更好地模拟所描述场景的此响应,请分享。
您的 C# 模型和结果 JSON 匹配。从问题开始到问题结束,您所要求的更改。您似乎希望从 C# 模型和 JSON 中删除您想要的示例包含的对象以及carId
C# 模型中不存在的属性。
您需要删除中间CarInfo
类,而是有你的汽车的列表是这是由继承了通用接口CarDetails
,ServiceDetails
以及MarketingInfo
,那么你就不会看到你的JSON的“MarketingInfoDetails”属性。
如果您改为添加carId
属性CarInfo
并再次将 C# 模型序列化为 JSON,您将看到您当前的模型与您最初声明的您希望 JSON 的外观完全匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句