【发布时间】:2016-01-06 18:09:42
【问题描述】:
我想将一堆转换为 json 的数据作为字符串发送到 Web API POST 方法。我可以发送一个简单的字符串就好了,但是当我尝试发送字符串化的 json 数据时,甚至没有达到该方法 - 显然复杂的字符串不被视为有效的字符串值或其他东西。
当从客户端传递“randomString”时,这有效:
网络 API
[Route("{unit}/{begindate}/{enddate}/{stringifiedjsondata}")]
[HttpPost]
public void Post(string unit, string begindate, string enddate, string stringifiedjsondata)
{
// test
string jsonizedData = stringifiedjsondata;
WinForms
string dataAsJson = "randomString";
String uriToCall = String.Format("/api/produceusage/{0}/{1}/{2}/{3}", _unit, beginRange, endRange, dataAsJson);
HttpResponseMessage response = await client.PostAsync(uriToCall, null);
当字符串为json数据时,如:
[
{
"ItemDescription": "DUCKBILLS, GRAMPS-EIER 70CT 42#",
"PackagesMonth1": 1467, . . . }]
...它不起作用。我通过使用 JSON.NET 将通用列表转换为 json 来创建此字符串,如下所示:
string dataAsJson = JsonConvert.SerializeObject(_rawAndCalcdDataAmalgamatedList, Formatting.Indented);
String uriToCall = String.Format("/api/produceusage/{0}/{1}/{2}/{3}", _unit, beginRange, endRange, dataAsJson);
HttpResponseMessage response = await client.PostAsync(uriToCall, null);
所以唯一的区别在于字符串;当它像“randomString”这样简单时,我会在 Web API POST 方法中到达这一行:
string jsonizedData = stringifiedjsondata;
...但是当它是一个复杂的字符串时,例如字符串化的 json 数据,则无法到达该行。
为什么?以及如何修复字符串化的 json 数据以便接收和识别?
【问题讨论】:
标签: c# serialization json.net http-post asp.net-web-api-routing