类似这种关于ASP.NET之前老版本的问题,我希望得到一个HTTP POST请求体被绑定到一个字符串.value当ASP.NET调用我的控制器方法时,似乎该方法绑定,但是为null:
namespace Demo.Controllers
{
[Route("[controller]")]
public class WebApiDemoController : Controller
{
...
// POST api/values
[HttpPost]
public System.Net.Http.HttpResponseMessage Post([FromBody]string value)
{
// expected: value = json string, actual: json = null.
}
Run Code Online (Sandbox Code Playgroud)
我还需要从溪流中抓住身体吗?或者这应该工作吗?在测试上述方法时,我使用了以下http标头:
Accept: Application/json
Content-Type: Application/json;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
我在身体中传递以下内容: { "a": 1 }
我不想绑定到名为a的字符串变量.我想绑定任何我得到的JSON,然后我想在我的方法中使用JSON内容,任何任意内容.
如果我理解了文档,该[FromBody]属性应该已经完成了我想要的,但我猜测ASP.NET核心MVC绑定机制不会将json绑定到"字符串值",但也许我可以做其他事情让我获得同等程度的灵活性.
类似的问题在这里给了我一个想法,也许我应该写[FromBody] dynamic data而不是使用[FromBody] string value.
更新:在执行此操作之前应该考虑这种技巧,因为如果您希望.net核心框架为您处理JSON和XML编码,那么您刚刚杀死了该功能.某些类型的REST服务器可以并且通常具有支持XML和JSON内容类型的要求,至少我遇到过具有标准文档的内容类型.
我有这样的json
{
"name": "somenameofevent",
"type": "event",
"data": {
"object": {
"age": "18",
"petName": "18"
},
"desct": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有2个像这样的对象
public class CustEvent
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public string EventType{ get; set; }
[JsonProperty("data")]
public SomeData Data{ get; set; }
}
public class SomeData
{
[JsonProperty("object")]
public String SomeObject { get; set;}
[JsonProperty("dsct")]
public String SomeDesct { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我用来解析json对象Newtonsoft.NET库.以及如何将RAW JSON转换为SomeObject,SomeDesct属性?在JSON中,"data.object ..."是复杂的对象,我想只获得RAW JSON String到这些属性.你能帮助我吗 ?