请检查下面的控制器。我必须在这个控制器内处理Json响应。我的目标是抓住成功"值true或false。如何通过以下json响应访问该值?我已经尝试过使用JsSerialializer但没有运气。请查看图片以便更好地理解。提前谢谢。
查看型号:
public class GoogleRecaptcha
{
public bool success { get; set; }
public DateTime challenge_ts { get; set; }
public string hostname { get; set; }
}
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();
}
}
答案 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
属性为success
,DateTime
属性为challenge_ts
。如果您需要访问响应的其他字段,它也会更方便。
Json.Net反过来比JavaScriptSerializer
灵活得多。您需要安装Json.Net NuGet才能使用选项#3和#4。