我有这个JSON字符串,它有什么问题?我可以通过几个在线JSON测试人员运行它们,他们都说好。但是当这个通过实体框架发布到我的c#web api时,我的帖子体是null。有任何想法吗? 这是POST功能:
public void Post([FromBody]List<AIM.RunningProcess> list_runningprocesses)
{
if (list_runningprocesses == null) return;
这是JSON字符串:
[
{
"PSComputerName": "eetpcx31v.admin.eetp.local",
"ProcessName": "AcroRd32.exe",
"ProcessID": 14240,
"CommandLine": ".C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe. .C:\\Users\\jmetzler\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet Files\\Content.Outlook\\VG2QRLL8\\Pöyry_RevealingFlexibilityValueStudy_Proposal_v2_0.pdf.",
"CreationDate": "Oct 24 2013 14:21:09",
"Username": "jmetzler",
"RemoteIP": null
}
]
显然由于CommandLine属性而失败。 'commandline'的数据库列属性是varchar(8000)。这是'RunningProcess'类。
public partial class RunningProcess
{
public string PSComputerName { get; set; }
public string ProcessName { get; set; }
public string ProcessID { get; set; }
public string CommandLine { get; set; }
public Nullable<System.DateTime> CreationDate { get; set; }
public string Username { get; set; }
public string RemoteIP { get; set; }
}
有人有任何想法吗?
答案 0 :(得分:2)
使用http://json2csharp.com/生成您的C#类。答案中的类是从同一站点生成的。
从JSON开始,你的课应该是:
public class RootObject
{
public string PSComputerName { get; set; }
public string ProcessName { get; set; }
public int ProcessID { get; set; }
public string CommandLine { get; set; }
public DateTime CreationDate { get; set; }
public string Username { get; set; }
public string RemoteIP { get; set; }
}
因为您的ProcessID
是int
。
答案 1 :(得分:-1)
如果我正确地解决了您的问题,请尝试将JSON字符串更改为:
{list_runningprocesses:
[
{
"PSComputerName": "eetpcx31v.admin.eetp.local",
"ProcessName": "AcroRd32.exe",
"ProcessID": 14240,
"CommandLine": ".C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe. .C:\\Users\\jmetzler\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet Files\\Content.Outlook\\VG2QRLL8\\Pöyry_RevealingFlexibilityValueStudy_Proposal_v2_0.pdf.",
"CreationDate": "Oct 24 2013 14:21:09",
"Username": "jmetzler",
"RemoteIP": null
}
]
}