【发布时间】:2019-12-05 07:04:55
【问题描述】:
Web 服务需要这种格式:
{
"Data":"{\"Name\":\"HelloWorld\",\"BirthDate\":\"2020-03-03\",\"BirthPlace\":\"Nowhere\"}"
}
我需要上述格式才能发布到网络服务,但我下面的代码不符合格式。请帮忙。我一直在使用下面的代码发布
var Data = JsonConvert.SerializeObject(new
{
Data = new
{
Name= "HelloWorld",
BirthDate = "2020-03-03",
BirthPlace= "Nowhere"
}
});
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.PostAsJsonAsync(apiUrl, Data);
}
【问题讨论】:
-
您确定不需要在引号中添加转义符吗? (\")
-
打印你得到的字符串并将它与你需要的字符串进行比较。你会发现你得到了
{"Data":{"Name":"HelloWorld","BirthDate":"2020-03-03","BirthPlace":"Nowhere"}} -
无关:
using (var client = new HttpClient())只是为了举例,对吧?你不应该在生产代码中这样使用它。 -
如果 data 属性必须是一个带有内部对象序列化的字符串,您可以简单地对其进行两次序列化。
var Data = Newtonsoft.Json.JsonConvert.SerializeObject( new { Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { Name = "HelloWorld", BirthDate = "2020-03-03", BirthPlace = "Nowhere" }) }); -
@xdtTransform 你应该把它写下来作为答案。对我来说似乎是合理的,这与我的回答不同。事实上,我觉得它好一点。
标签: c# json post httprequest