我正在尝试将json请求发布到我的网络API:
JSON:
[{
'rows': [
{
'country': 'UK',
'description': 'this is a desc',
'gezien': true,
'Count': 3,
'url': 'een/twee',
'stam': 'blabla',
'kanaal': 'NOS'
},
{
'url': 'drie/vier',
'stam': 'divers',
'kanaal': 'SRV'
}
],
'skip': 0,
'take': 10,
'total': 100
}]
我的api控制器看起来像这样:
public class DataController : ApiController
{
// GET api/data
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/data/5
public string Get(int id)
{
return "value";
}
// POST api/data
public void Post([FromBody]string value)
{
}
// PUT api/data/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/data/5
public void Delete(int id)
{
}
}
我试图点击post方法,但字符串值为null?我正在使用小提琴手发布请求。
答案 0 :(得分:1)
您正在发布JSON数组,但该方法需要一个字符串。模型绑定器不知道如何处理这个问题,所以你得到了一个null。
有几种方法可以解决这个问题......
一种方法是通过将JSON包装在引号中来传递JavaScript字符串(并在必要时在字符串内转义引号)。该方法现在将接收一个字符串,模型绑定器将能够将其绑定到您的字符串参数。
第二个选项,如果您正在使用模型绑定器使用Json.NET的Web API 2,您可以将参数更改为JObject类型并传入原始JSON。 Json.NET将解析JSON并将其放入JObject
。您可以使用此JObject
或通过调用.ToString()
将其重新转换为JSON。
第三个选项是创建一个表示输入的类,并将参数更改为强类型对象。