为HttpClient Post方法准备Json Object

Rk *_*iri 2 c# json http-post json.net dotnet-httpclient

我试图为Post方法准备一个Json有效负载.服务器无法解析我的数据.我的值上的ToString()方法不能正确地将它转换为Json,请你建议正确的方法.

  var values = new Dictionary<string, string> 
                {
                  {"type", "a"}, {"card", "2"}
                };
  var data = new StringContent(values.ToSttring(), Encoding.UTF8, "application/json");
  HttpClient client = new HttpClient();
  var response = client.PostAsync(myUrl, data).Result;
  using (HttpContent content = response.content) 
  {
      result = response.content.ReadAsStringAsync().Result;
  }
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 6

您需要首先使用手动序列化对象 JsonConvert.SerializeObject

var values = new Dictionary<string, string> 
            {
              {"type", "a"}, {"card", "2"}
            };
var json = JsonConvert.SerializeObject(values);
var data = new StringContent(json, Encoding.UTF8, "application/json");

//...code removed for brevity
Run Code Online (Sandbox Code Playgroud)

或者根据您的平台,使用PostAsJsonAsync扩展方法HttpClient.

var values = new Dictionary<string, string> 
            {
              {"type", "a"}, {"card", "2"}
            };
var client = new HttpClient();
using(var response = client.PostAsJsonAsync(myUrl, values).Result) {
    result = response.Content.ReadAsStringAsync().Result;
}
Run Code Online (Sandbox Code Playgroud)

  • 值得指出的是,这两个都需要第三方库Json.Net(后者是该库提供的扩展方法)。截至发布时,Json.Net的下载位置为:https://www.newtonsoft.com/json (2认同)