C#Web服务,如何接收JSON
C# Web service, how to receive JSON
我用jquery制作了一个JSON字符串,我想把它发送到C#web api控制器。
这是JSON对象的一个示例
{"Name":"","Type":"4","Meals":["2","3"],"Excludes":["Beef","Chicken"]}
我试着用一个类似的URL发送它
API/Recipe/Search?json={"Name":"","Type":"4","Meals":["2","3"],"Excludes":["Beef","Chicken"]}
我的控制器是这样的:
public class RecipeController : ApiController
{
[HttpGet]
public string Search(searchObject json)
{
return "Asdasd";
}
}
就像这个
public class RecipeController : ApiController
{
[HttpGet]
public string Search(string json)
{
searchObject search = (searchObject)JsonConvert.DeserializeObject(json);
return "Asdasd";
}
}
但在这两种情况下,控制器都不会拾取它。我正在使用MVC4。
这是我用来进行调用的Jquery。apiLink是我在上面发布的链接。
$.getJSON(apiLink, function (data) {
var items = [];
$.each(data, function (key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('body');
});
如何让控制器接收JSON对象?
感谢
您应该在方法中使用POST属性,这样您就可以将复杂的对象发布到Web API,
您可以为JSON创建一个类,从JSON到cSharp
public class SearchObject
{
public string Name { get; set; }
public string Type { get; set; }
public List<string> Meals { get; set; }
public List<string> Excludes { get; set; }
}
然后在web api中,指定具有HttpPost属性的方法,web api将负责将帖子中的json反序列化为模板。
[HttpPost]
public string Search(SearchObject json)
{
return "Asdasd";
}
您可以尝试fiddler,用于进行post请求,在请求标头中指定类型:
内容类型:application/json
并在请求正文中粘贴json,然后执行
看起来您已经得到了响应,但下面是一个有效解决方案的代码:
注:我在MVC3中使用了JsonResult Actions,但原理与相同
控制器:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[HttpPost] // requires HttpPost attribute
public JsonResult SendData(SearchObject payload)
{
// do something here
return Json(new { status = "Success" });
}
}
public class SearchObject
{
public string Name { get; set; }
public string Type { get; set; }
public List<string> Meals { get; set; }
}
视图:
@{
ViewBag.Title = "Index";
}
<script src="../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.ajaxSetup({ accepts: "application/json" });
$.ajax({
url: '@Url.Action("SendData")', type: "POST",
success: function (data) {
alert(data.status);
},
error: function (a, b, c) { },
data: { 'Name':'Glenn','Type':'4','Meals':["1","2"] }
});
</script>
<h2>Index</h2>
希望这能帮助。。。
相关文章:
- REST API 服务器是否应该使用 PUT 接收 JSON 数据或普通表单数据
- 调用函数并接收JSON
- C#Web服务,如何接收JSON
- 快递邮件接收json不是我发送的
- 接收json异步响应的最有效方式
- 如何在 jquery 成功方法中接收 JSON 并使用该 JSON 构建 HTML 内容
- 通过 AJAX 接收 JSON asp.net 问题
- 接收 JSON 时的 jQuery 事件 - 一次性 URL
- 无法仅从 JQuery ajax 调用接收 JSON
- 如何接收 JSON 数组
- 我似乎无法正确接收JSON对象
- 从http://www.autorenlexikon.lu接收JSON列表
- 用JavaScript从网站接收JSON
- 美元.ajax无法接收JSON HTTP响应
- 如何从AJAX (Javascript到PHP)正确接收JSON响应
- 通过DWR发送和接收JSON对象
- HTTP(S)使用Javascript请求并接收JSON数据
- 通过ajax接收json
- 通过XMLHTTPRequest从MVC控制器接收JSON数据
- 编写AJAX来接收JSON文件