json - Web api 调用返回带有空字段的 json 数据
问题描述
我正在使用 Flurl(下面的函数)获取一些 json 数据。我的问题是这会返回预期的字段,而不是实际的数据:
json 位于:https ://jsonplaceholder.typicode.com/users
完全相同的功能在不使用 Microsoft.AspNetCore.Mvc 的单独独立测试应用程序中运行良好。
任何想法为什么它会返回字段而不是数据?谢谢。
using System;
using Test.API.Constants;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Flurl.Http;
namespace Test.API.Controllers
{
public class TestController
{
[Route(ApiControllerRoutes.Test.test)]
[HttpGet]
public async Task<dynamic> GetAsync()
{
try
{
string url = "https://jsonplaceholder.typicode.com/users";
return await url.GetJsonListAsync();
}
catch (Exception e)
{
}
}
}
}
解决方案
GetJsonListAsync
(没有通用参数)返回Task<IList<dynamic>>
,所以最简单的解决方法是使用控制器的相同返回类型,而不是Task<dynamic>
.
如果您希望它更健壮且类型安全,我将dynamic
完全跳过 s 并创建一个User
类,然后在您的控制器中使用GetJsonListAsync<User>()
并返回。Task<IList<User>>
我看到其中涉及嵌套对象,因此您实际上需要几个类来表示整个结构。json2csharp是一个很好的工具来帮助解决这个问题。只需粘贴单个用户的 JSON 表示形式(不是整个列表),它就会为您生成所有内容。
推荐阅读
- excel - 根据日期差异计算实例数(Excel/VBA)
- splunk - Splunk 嵌套查询
- python - 如何使用 IDC 或 IDAPython 获取当前偏移量?
- docker - Windows Docker 正在路由到意外的 IP 并丢失
- groovy - 如何使用 groovy 传递可选的查询参数?
- python - 如何从包含二进制像素数据的数组列表创建新图像
- php - Moodle对象存储文件系统“未找到候选对象”
- java - 如何在 Swing 应用程序中关闭 JButton 上的闪光灯?
- mysql - 了解 MySQL 中按位运算符的使用?
- google-data-studio - 如果数据在数据工作室中具有空值,则显示 0 值