JsonConverter DeserializeObject Single或Multiple to Generic类

时间:2018-03-19 08:29:59

标签: c# json rest json.net

我想将我的json字符串反序列化为我的泛型类。但我想用一种方法做到这一点。当我打电话给这个链接时;

这是我的代码; 我的班级:

public class Test
{
    public string userId { get; set; }

    public string Id { get; set; }
}

我的反序列化课程:

    private static async Task<IRestResponse<T>> MapResponse<T>(HttpResponseMessage response) where T : class
    {
        var restResponse = new WebApiRestResponse<T>
        {
            Content = await response.Content.ReadAsStringAsync(),
            StatusCode = response.StatusCode
        };
        try
        {
            var body = await response.Content.ReadAsStringAsync();
            if (response.Content.Headers.ContentType.MediaType == "text/plain")
                restResponse.Exception = new RestInteractionException(body);
            else
                restResponse.Data = JsonConvert.DeserializeObject<List<T>>(body); ;
        }
        catch (Exception e)
        {
            restResponse.Exception = e;
        }

        return restResponse;
    }


 public interface IRestResponse
    {

        string Content { get; }


        Exception Exception { get; set; }

        HttpStatusCode StatusCode { get; }
    }

    public interface IRestResponse<T> : IRestResponse
    {
        List<T> Data { get; }

    }

https://jsonplaceholder.typicode.com/posts/1

它返回单个对象。

当我打电话给这个链接时;

https://jsonplaceholder.typicode.com/posts

MapResponse类使反序列化为json到泛型类。但有时我会调用单个对象,有时我会调用list对象。那么我怎么能在这段代码中做到这一点?

祝你好运

1 个答案:

答案 0 :(得分:2)

由于您有时可以将列表作为结果,因此如果您需要单个方法,请始终将其作为列表返回。当您有一个对象时,只需创建新列表并添加它。