C# 读取/解析WEB API 2 IHttpActionResult响应的最佳方法是什么?

C# 读取/解析WEB API 2 IHttpActionResult响应的最佳方法是什么?,c#,json,asp.net-web-api2,C#,Json,Asp.net Web Api2,我有以下web api方法: public IHttpActionResult Get(int id) { var person = _personRepository.GetPersonByID(id); if (person == null) return NotFound(); return Ok<Person>(person); } public IHttpActionRes

我有以下web api方法:

    public IHttpActionResult Get(int id)
    {
        var person = _personRepository.GetPersonByID(id);

        if (person == null)
            return NotFound();

        return Ok<Person>(person);
    }
public IHttpActionResult Get(int-id)
{
var person=\u personRepository.GetPersonByID(id);
if(person==null)
返回NotFound();
返回Ok(个人);
}
以及以下客户端调用方法:

        var data = default(IEnumerable<T>);
        var response = _client.GetAsync(relativeUri).Result;
        response.EnsureSuccessStatusCode(); // Throw on error code.
        if (response.IsSuccessStatusCode)
        {
            //string dataString = response.Content.ReadAsStringAsync().Result;
            data = response.Content.ReadAsAsync<IEnumerable<T>>().Result;
        }
        else
        {
            //return response status code/reason phrase
        }
var数据=默认值(IEnumerable);
var response=\u client.GetAsync(relativeUri.Result);
response.EnsureSuccessStatusCode();//抛出错误代码。
if(响应。IsSuccessStatusCode)
{
//字符串dataString=response.Content.ReadAsStringAsync().Result;
数据=response.Content.ReadAsAsync().Result;
}
其他的
{
//返回响应状态代码/原因短语
}
ReadAsAsync调用完成后,数据变量表示类型为T的集合,其计数与返回的行匹配,但所有对象(元素)都具有空值属性或为空。 未在属性中填充实际值

Fiddler显示JSON字符串。甚至,readasstringasync()方法返回JSON字符串

有没有更好的方法可以使用ReadAsXXXX()方法之一将JSON解析为T类型

谢谢


-Jignesh

我只是想更新一下,我已经找到了我所面临问题的根本原因

我提到的代码示例实际上是调用web api方法的正确方法

在我的例子中,JSON字符串在服务器端以驼峰格式格式化,在客户端则使用默认格式

这是导致问题的服务器端代码:

var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var jsonFormatter=config.Formatters.OfType().First();
jsonFormatter.SerializerSettings.ContractResolver=新的CamelCasePropertyNamesContractResolver();
一旦移除,它就开始工作

显然,ReadAsAsync方法找不到匹配的属性,因此删除了所有值

谢谢

-吉格内斯