我已经在网上搜索了几个小时,并尝试了许多不同的解决方案,这些解决方案也在StackOverflow上进行了描述。我之前已经问过类似的问题,但没有一个答案或评论对我有用。
问题:我有一个.NET Web API,它有一个带有一些参数的Post方法。 其中一个参数是一个复杂的对象,应该从正文中读取(即JSON)。但是,此对象始终为null 。
这是我的代码:
// POST api/worksheets/post_event/true/false
[Route("post_event/{newWorksheet}/{eindEvent}")]
[HttpPost]
public Event Post(bool newWorksheet, bool eindEvent, [FromBody] Event eventData)
{
return eventData;
}
要明确:eventData是始终为null的对象。布尔值被正确读取。
完整的请求正文是:
POST http://localhost:5000/api/worksheets/post_event/true/false
Content-Type: application/json
{"Persnr":1011875, "WorksheetId":null, "Projectnr":81445, "Uursoort":8678, "Tijd":{"09-08-2016 9:25"}}
作为参考,这是Event-class:
public class Event
{
public long Persnr { get; set; }
public int WorksheetId { get; set; }
public int Projectnr { get; set; }
public int Uursoort { get; set; }
public DateTime Tijd { get; set; }
}
我已经尝试过的一些事情:
根据我读过的所有解决方案和文档,它应该按我上面显示的方式工作。 我错过了什么?
答案 0 :(得分:1)
您的json对象无效。我的建议是始终通过json解析器手动编写json对象,如下所示:http://json.parser.online.fr/
"Tijd":{"09-08-2016 9:25"}
应该是
"Tijd":["09-08-2016 9:25"]
答案 1 :(得分:0)
此类型的正确JSON应该只是
Select bloodGroup = new Select(driver.findElement(By.id("user_vitals_blood_group")));
bloodGroup.selectByIndex(3);
Tijd没有花括号,因为Tijd是普通的DateTime属性,可以从string中推断出来,代表DateTime
答案 2 :(得分:0)