从 API 接收数据并将其分配给模型的问题

Posted

技术标签:

【中文标题】从 API 接收数据并将其分配给模型的问题【英文标题】:Problem receiving data from API and assigning it to model 【发布时间】:2021-10-20 14:20:35 【问题描述】:

我有一个对 API 进行异步调用的方法,API 返回的数据结构与我要分配的模型相同。但是它从不加载对象。数据始终为空,但如果有来自 API 的响应并且如果它传递了数据,但没有将其分配给变量:“podcast”

此方法的目的是将数据传递给视图。 (我在 Web 项目中使用 .Net core 5)

这是我的方法

        public async Task<IActionResult> details(int id)
    
        if (id != 0)
        
            //Read Service for config Metas 
            PPodcast podcast = new PPodcast();

            using (var httpClient = new HttpClient())
            
                using (var response = await httpClient.GetAsync($"_storageOption.devVirtualPath_endpoints.ObtenerPodcast" + id))
                
                    string apiResponse = await response.Content.ReadAsStringAsync();
                    podcast = JsonConvert.DeserializeObject<PPodcast>(apiResponse);
                
            
            ViewBag.idPodcast = id;
            return View(podcast);

        
        return View(null);
    

这是我的模型:

 public class PPodcast

    public int id  get; set; 
    public int idSeccion  get; set; 
    public string titulo  get; set; 
    public string descripcion  get; set; 
    public string contenido  get; set; 
    public string embeb  get; set; 
    public string imagenRef  get; set; 
    public string tags  get; set; 
    public string fecha_PE  get; set; 
    public DateTime Fecha  get; set; 
    public string Hora  get; set; 
    public string urlPodcast  get; set; 
    public string SeccionNombre  get; set; 
    

【问题讨论】:

请给我们看一些apiResponse的实际内容 嗨,这是响应的一部分 "\"data\":\"id\":34,\"idSeccion\":2,\"titulo\":\"Peruano que trabaja en Facebook impulsa Techsuyo\",\" return View(null); 不应该是return View(podcast)吗? 或者如果我很抱歉这是一个错字,但这不是问题,问题是数据的返回没有分配给变量“podcast” 是的,这是错误的,根据您的回复,PPodcast 嵌套在 json 的 data 部分中,您并没有指出deserilizer 所以它不理解它 【参考方案1】:

如果您的所有响应都具有相同的形状,最好创建一个包含您想要的类的通用类

示例:

public class Response<T> 

    public T Data   get; set; 
    // additional items like errors and such

然后在您的除雾器中,您将使用它

podcast = JsonConvert.DeserializeObject<Response<PPodcast>>(apiResponse).Data;

【讨论】:

我正在测试它,但是 em 说你不能将 Response 类型隐式转换为 Podcast 修正了代码中的错字,现在应该可以使用了 现在完美运行。我非常感谢您的合作和您的时间。非常感谢 很好,请标记为已回答 您能指导我在哪个部分将其标记为已回答吗?请

以上是关于从 API 接收数据并将其分配给模型的问题的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel API 服务器接收的数据未显示在 Flutter 屏幕上

我如何从用户那里接收字符串并将其分配到没有任何中间变量的指针数组中?

Green Hills Integrity 动态内存分配

从文本文件中读取数据并将其分配给数据框的最快方法是啥?

将值从数据库传递到 vue 组件并将其分配给变量

Android 无法通过 API 接收多条记录