我正在尝试将json请求发布到我的web 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方法,但是字符串值为空?我正在使用fiddler发布请求。
发布于 2014-03-18 08:59:56
您正在发送一个JSON数组,但该方法需要一个字符串。模型绑定器不知道如何处理这个问题,所以你会得到一个null。
有几种方法可以解决这个问题……
一种方法是传递一个JavaScript字符串,方法是将JSON括在引号中(必要时在字符串中使用转义引号)。该方法现在将接收一个字符串,并且模型绑定器将能够将其绑定到您的字符串参数。
第二种选择是,如果您使用的是WebAPI2,而模型绑定器使用的是Json.NET,那么您可以将参数更改为JObject类型,并传入原始的JSON。Json.NET将解析JSON并将其放入JObject中。您可以使用此JObject,也可以通过在其上调用.ToString()将其转换回JSON。
第三种选择是创建一个类来表示您的输入,并将参数更改为强类型对象。
https://stackoverflow.com/questions/22467731
复制相似问题