从api获取json响应

时间:2017-12-09 09:31:00

标签: asp.net-mvc

请检查下面的控制器。我必须在这个控制器内处理Json响应。我的目标是抓住成功"值true或false。如何通过以下json响应访问该值?我已经尝试过使用JsSerialializer但没有运气。请查看图片以便更好地理解。提前谢谢。

查看型号:

public class GoogleRecaptcha
{
    public bool success { get; set; }
    public DateTime challenge_ts { get; set; }
    public string hostname { get; set; }
}

pic1 pic2

public ActionResult DownloadProcess()
{
    using (BlexzWebDbEntities db = new BlexzWebDbEntities())
    {
        //Validate Google recaptcha below
        var Response = Request["g-recaptcha-response"];
        string SecretKey = "6Lghu-MJoniMPXVf";

        //var client = new WebClient();

        var client = new RestClient("https://www.google.com/recaptcha/api/siteverify");
        var request = new RestRequest(Method.POST);
        request.Method = Method.POST;
        request.Parameters.Clear();
        request.AddParameter("secret", SecretKey);
        request.AddParameter("response", Response);
        var ResultFromGoogle = client.Execute(request).Content;

        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        var r = jsSerializer.DeserializeObject(ResultFromGoogle);


        return View();
    }

}

1 个答案:

答案 0 :(得分:1)

有多种方法可以做你想做的事:

<强> 1。将JavaScriptSerializer与强类型模型一起使用:

public class ResultFromGoogle
{
    public bool Success { get; set; }

    public DateTime Challenge_ts { get; set; }

    public string Hostname { get; set; }
}

ResultFromGoogle results = jsSerializer.Deserialize<ResultFromGoogle>(ResultFromGoogle);
var successValue = results.Success;

<强> 2。使用没有强类型模型的JavaScriptSerializer:

var props = (Dictionary<string, object>)jsSerializer.DeserializeObject(ResultFromGoogle);
var successValue = props["success"];

第3。将JSON.Net与强类型模型一起使用:

var results = JsonConvert.DeserializeObject<ResultFromGoogle>();
var successValue = results.Success;

<强> 4。使用没有强类型模型的JSON.Net:

var successValue = JObject.Parse(ResultFromGoogle).GetValue("success");

总体而言,我建议使用强类型模型,因为它提供了对所需类型的转换(例如,bool属性为successDateTime属性为challenge_ts。如果您需要访问响应的其他字段,它也会更方便。

Json.Net反过来比JavaScriptSerializer灵活得多。您需要安装Json.Net NuGet才能使用选项#3和#4。