如何从httpClient.PostAsJsonAsync绑定JSON响应

时间:2017-04-09 15:41:49

标签: c# asp.net-web-api asp.net-web-api2

我可以httpClient.PostAsJsonAsync(路径,内容)很好。

但是,这篇文章会返回一些JSON,其中包含响应的详细信息,例如: { “的StatusCode”:200, “AccessCode”: “92BEEB285ZB47DA”, “InternalMessage”:空}

我需要访问AccessCode。

如何干净有效地完成这项工作?我可以创建这样的对象:

public class GIResponse
{
    public string StatusCode { get; set; }
    public string AccessCode { get; set; }
    public string InternalMessage { get; set; }
}

并将其映射到结果?

或者我将如何遍历JSON并拔出AccessCode?

我进行了相当广泛的搜索,但令人惊讶的是我在Google上找不到任何内容 - 也许这是因为这是Post的结果,而不是Get。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您使用responseText获得httpResponse.Content.ReadAsStringAsync,则可以使用Json.NET的JObject并将其定义为动态:

dynamic j = JObject.Parse(@"{""StatusCode"":200,""AccessCode"":""92BEEB285ZB47DA"",""InternalMessage"":null}");
Console.WriteLine(j.AccessCode);

您也可以使用JsonConvert

var result = JsonConvert.Deserialize<MyModel>(resposeText);

显然,如果您已经有一个模型,则不要将其作为字符串阅读,您只需将其作为模型阅读:

var result = httpResponse.Content.ReadAsAsync<MyModel>();