我正在使用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)
{
}
}
}
}
答案 0 :(得分:0)
GetJsonListAsync
(不带通用参数)返回Task<IList<dynamic>>
,因此最简单的解决方法是使用控制器中的相同返回类型,而不是Task<dynamic>
。
如果您希望它更加健壮和类型安全,我将完全跳过dynamic
并创建一个User
类,然后使用GetJsonListAsync<User>()
并返回{{1 }}在您的控制器中。我看到其中涉及嵌套对象,因此您实际上需要几个类来表示整个结构。 json2csharp是一个很好的工具。只需粘贴单个用户的JSON表示形式(而不是整个列表),它将为您生成所有内容。