C#-反序列化对象结果并将其映射到Web API的列表

时间:2018-09-18 14:27:56

标签: c# asp.net-web-api json.net httpclient

美好的一天,

我正在尝试反序列化api中的列表,但是问题是api有一个对象。

我的API结果如下:

{
    result:[
    {
        "name": "Jessica"
    },
    {
        "name": "May"
    },
    {
        "name": "Joseph"
    }]
}

这是我的反序列化代码,但由于result而无法从api获取列表,因此失败了。

var httpClient = new HttpClient();

var task = await httpClient.GetStringAsync("http://something.com/api/whatever");

return JsonConvert.DeserializeObject<List<Whatever>>(task);

我的Whatever.cs看起来像这样

public class Whatever {
    public string Name {get;set;}
}

是否有某种方法像我删除结果那样就可以将其反序列化为列表,或者Newtonsoft.JSON提供了任何选项来修剪result并使其成为列表而不是对象? / p>

提前谢谢

1 个答案:

答案 0 :(得分:2)

您的课程应该是这样的。

public class Result
{
    public string name { get; set; }
}

public class RootObject
{
    public List<Result> result { get; set; }
}

您可以序列化此json:

{
    result: [{
        'name': 'Jessica'
    },
    {
        'name': 'May'
    },
    {
        'name': 'Joseph'
    }]
}

赞:

var res = JsonConvert.DeserializeObject<RootObject>(jsonString);

要创建类,您可以使用json2csharp