Вызов веб-API возвращает данные JSON с пустыми полями - PullRequest
0 голосов
/ 16 октября 2018

Я получаю некоторые данные JSON, используя Flurl (функция ниже).Моя проблема заключается в том, что это возвращает ожидаемые поля, но не фактические данные:

screenshot

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)
            {
            }
        }
    }
}

1 Ответ

0 голосов
/ 17 октября 2018

GetJsonListAsync (без универсального аргумента) возвращает Task<IList<dynamic>>, поэтому самое простое решение - использовать тот же тип возврата с вашего контроллера вместо Task<dynamic>.

Если вы хотите, чтобы это былонемного более надежный и безопасный для типов, я бы вообще пропустил dynamic s и создал бы класс User, затем использовал бы GetJsonListAsync<User>() и возвратил Task<IList<User>> в вашем контроллере.Я вижу, что здесь задействованы вложенные объекты, поэтому на самом деле вам нужно несколько классов для представления всей структуры. json2csharp - отличный инструмент для помощи в этом.Просто вставьте JSON-представление одного пользователя (не весь список), и он сгенерирует все для вас.

...