ASP.NET Core 6.0 Web API中Car模型的定义方法咨询
在ASP.NET 6 Core Web API中定义对应Car模型的方法
根据你提供的JavaScript对象结构,我们可以通过嵌套类+字典类型来映射对应的C#模型,同时利用JsonPropertyName特性保证JSON序列化后的键与原JS结构完全匹配。
1. 定义嵌套的Specs类
对应JS里的specs对象:
public class CarSpecs { [JsonPropertyName("transmission")] public string Transmission { get; set; } [JsonPropertyName("fuelType")] public string FuelType { get; set; } [JsonPropertyName("numOfSeats")] public int NumOfSeats { get; set; } }
2. 定义Car主类
主类包含所有顶级属性,其中highlights因键为不规则字符串且值类型混合,用Dictionary<string, object>来映射:
using System.Text.Json.Serialization; public class Car { [JsonPropertyName("make")] public string Make { get; set; } [JsonPropertyName("model")] public string Model { get; set; } [JsonPropertyName("price")] public decimal Price { get; set; } // 用decimal比int更适合表示价格,避免精度问题 [JsonPropertyName("rentalType")] public string RentalType { get; set; } [JsonPropertyName("specs")] public CarSpecs Specs { get; set; } [JsonPropertyName("imgSrc")] public string ImgSrc { get; set; } [JsonPropertyName("info")] public string Info { get; set; } [JsonPropertyName("highlights")] public Dictionary<string, object> Highlights { get; set; } }
关键说明
- 命名对齐:C#使用帕斯卡命名法,通过
JsonPropertyName特性指定JSON序列化后的键名,确保和原JS对象的驼峰/特殊键完全匹配;如果依赖ASP.NET 6默认的驼峰序列化规则,也可以省略该特性,类属性会自动转换为驼峰键。 - Price类型选择:用
decimal替代int更贴合实际价格场景,避免整数无法表示小数金额的问题。 - Highlights类型选择:由于JS里的
highlights键是非标准命名(如"2.0L"、"TOP SPEED")且值类型混合(字符串、数字),Dictionary<string, object>是最灵活的映射方式,序列化后会完整保留原键值对结构。
内容的提问来源于stack exchange,提问作者Niv
相关产品推荐
相关产品推荐

