使用下面的代码,我设法使用以下格式创建jsonArray:[{"id":3},{"id":4},{"id":5}]
var jArray = new JsonArray();
int numOfChildren = 10;
for (int i = 0; i < numOfChildren; i++)
{
if (CONDITION == true)
{
var jObj = new JsonObject();
int id = SOMEID;
jObj.SetNamedValue("id", JsonValue.CreateNumberValue(id));
jArray.Add(jObj);
}
我现在正试图发送&#34; JsonArray&#34;使用PostAsync到服务器,如下所示:
Uri posturi = new Uri("http://MYURI");
HttpContent content = new StringContent(jArray.ToString(), Encoding.UTF8, "application/json");
System.Net.Http.HttpResponseMessage response = await client.PostAsync(postUri, content);
在服务器方面,我可以看到帖子请求不包含任何内容。在挖掘互联网之后,看起来在StringContent中使用jArray.ToString()是罪魁祸首,但我不理解为什么或者如果这首先是问题。那么,为什么我的内容丢失了?请注意,我是为不使用JSON.net的UWP应用程序编写的。
答案 0 :(得分:0)
经过多次挖掘,我最终将两个不同的应用程序Wiresharked,一个使用我原来的jArray.ToString(),另一个使用JSON.net的JsonConver.SerializeObject()。在Wireshark中,我可以看到两个数据包的内容是相同的,所以告诉我我的问题存在于服务器端。我最终发现我处理传入POST请求的PHP脚本过于文字,只接受类型为&#39; application / json&#39;的json帖子。我的UWP应用程序发送了类型为&application; / json的数据包;字符集= UTF-8&#39 ;.放松了一些我在服务器端检查的内容后,一切都很顺利。
对于那些希望在不使用JSON.net的情况下序列化json的人来说,jsonArray.ToString()或者jsonArray.Stringify()都运行良好。
答案 1 :(得分:-1)
您应该使用Serializer将其转换为字符串。 使用NewtonSoft JSON Nuget。
string str = JsonConvert.SerializeObject(jArray);
HttpContent content = new StringContent(str, Encoding.UTF8, "application/json");
System.Net.Http.HttpResponseMessage response = await client.PostAsync(postUri, content);