从 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 屏幕上