【发布时间】:2021-09-29 22:00:17
【问题描述】:
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:MarketingInfo
"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 serialization