C# 获取json数据和图像

C# 获取json数据和图像,c#,json,api,asp.net-web-api,C#,Json,Api,Asp.net Web Api,我有一个Web Api控制器,可以从数据库中获取汽车列表 [HttpGet, Route("list")] public object List() { var cars = context.Cars.ToList(); return Json(cars); } 反应看起来像 [{ "markName": "Chevrolet", "modelName": "Spark EV", "year": 2014, "id": 1 }, {

我有一个Web Api控制器,可以从数据库中获取汽车列表

[HttpGet, Route("list")]
public object List()
{
    var cars = context.Cars.ToList();        
    return Json(cars);
}
反应看起来像

[{
   "markName": "Chevrolet",
   "modelName": "Spark EV",
   "year": 2014,
   "id": 1
},
{
   "markName": "Chevrolet",
   "modelName": "Volt",
   "year": 2014,
   "id": 2
}]
我也有一个功能,以获得图像的id

[HttpGet, Route("{id}/photo")]
        public IActionResult GetPhoto(int id)
        {
            string path = "blalblabla"
            Byte[] b = System.IO.File.ReadAllBytes(path);         
            return File(b, "image/jpeg");
        }

如何在一个请求中获取所有数据(json和图像)?或者我应该用其他方法来实现这一点?

您可以创建一个视图模型来封装所有需要的信息。包括一个url,指向获取图像和其他元数据的位置

比如说

public class CarModel {
  public string markName { get; set; }
  public string modelName { get; set; }
  public int year { get; set; }
  public int id { get; set; }
  public string photo { get; set; }
}
然后,您将包含一个指向照片操作的链接

[HttpGet("list")]
public IActionResult List() {

    var cars = context.Cars.AsEnumerable();
    var models = cars.Select(car => 
                            new CarModel {
                                markName = car.markName,
                                modelName = car.modelName, 
                                year = car.year,
                                id = car.id,
                                photo = Url.RouteUrl("CarPhoto", new { id = car.id })
                            }).ToList();

    return Ok(models);
}

[HttpGet("{id}/photo", Name = "CarPhoto")]
public IActionResult GetPhoto(int id) {
    string path = "blalblabla"
    Byte[] b = System.IO.File.ReadAllBytes(path);         
    return File(b, "image/jpeg");
}
示例响应可能如下所示

[{
   "markName": "Chevrolet",
   "modelName": "Spark EV",
   "year": 2014,
   "id": 1,
   "photo": "cars/1/photo"
},
{
   "markName": "Chevrolet",
   "modelName": "Volt",
   "year": 2014,
   "id": 2
   "photo": "cars/2/photo"
}]

两种行动方式的路线不同。您可以创建另一个函数,该函数将获取JSON值和图像(作为字节流),并将它们存储在单个自定义模型集合中。然后,您可以调用该函数,该函数将返回JSON和图像的字节流。您需要读取字节并将其转换为您的文件格式。