gpt4 book ai didi

C# Web服务,如何接收JSON

转载 作者:太空狗 更新时间:2023-10-30 01:23:19 24 4
gpt4 key购买 nike

我用 jquery 创建了一个 JSON 字符串,我想将它发送到 C# web api Controller 。

这是一个JSON对象的例子

{"Name":"","Type":"4","Meals":["2","3"],"Excludes":["Beef","Chicken"]}

我试着用这样的 URL 发送它

API/Recipe/Search?json={"Name":"","Type":"4","Meals":["2","3"],"Excludes":["Beef","Chicken"]}

我的 Controller 是这样的:

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";
}
}

但在这两种情况下, Controller 都不会拾取它。我正在使用 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');
});

如何让 Controller 接收 JSON 对象?

谢谢

最佳答案

您应该在该方法中使用 POST 属性,这样您就可以将复杂的对象发布到 Web API,

您可以为 JSON 创建一个类,来自 json to 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 将负责将 post 中的 json 反序列化到您的模板。

[HttpPost]
public string Search(SearchObject json)
{
return "Asdasd";
}

你可以试试 fiddler,为了发出一个 post 请求,在请求头中指定类型:

Content-Type:application/json

并在请求正文中粘贴您的 json,然后执行

关于C# Web服务,如何接收JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com