我有一个供应商希望 Web API
GET
请求的响应与所附屏幕截图中的内容完全相同。我正在使用 ASP.NET Web.API,但我不使用实体框架。
正在从 SQL Server 存储过程检索数据。我在检索数据时没有任何问题,但无法找到一种格式化数据的方法,如下所示:我尝试使用 SQL Server
FOR JSON
,创建多个表并连接它们,但在每种情况下,cartId
等都会重复而不是显示一次并根据需要嵌套其余数据?
我尝试过在单个数据表、多个数据表、单个数据集、列表、数组等中返回数据,但在所有情况下格式都不正确。
返回 JSON 最惯用的方法是定义一个对象模型,该模型由一个或(在这种情况下几乎肯定)多个数据传输对象 (DTO) 组成,这些数据传输对象对 JSON 文档的外观进行建模。
在这种情况下,您似乎需要一个像这样的根类(假设 cart 是根的适当名称):
public class CartDto
{
public string CartId { get; set; }
public string CartCurrency { get; set; }
public ContactDetailsDto[] ContactDetails { get; set; }
public LineItemDto[] LineItems { get; set; }
public ShopperCheckoutExperienceDto ShopperCheckoutExperience { get; set; }
}
正如此处所暗示的,您还需要相应的
ContactDetailsDto
、LineItemDto
和 ShopperCheckoutExperienceDto
类,甚至可能比用于进一步嵌套的类还要多。
然后,您需要弄清楚如何将数据库数据转换为这样的对象图。
您可以参考我最近的系列文章服务器的三种数据架构了解更多详情。