从响应中删除属性名称

用户1765862
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"}] 
    }] 
}

如果您认为可以更好地模拟所描述场景的此响应,请分享。

安德鲁·H

您的 C# 模型和结果 JSON 匹配。从问题开始到问题结束,您所要求的更改。您似乎希望从 C# 模型和 JSON 中删除您想要的示例包含的对象以及carIdC# 模型中不存在属性。

您需要删除中间CarInfo类,而是有你的汽车的列表是这是由继承了通用接口CarDetailsServiceDetails以及MarketingInfo,那么你就不会看到你的JSON的“MarketingInfoDetails”属性。

如果您改为添加carId属性CarInfo并再次将 C# 模型序列化为 JSON,您将看到您当前的模型与您最初声明的您希望 JSON 的外观完全匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章