为HTTPCLIENT POST方法准备JSON对象



我正在尝试将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;
}

您需要首先使用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

或根据您的平台,使用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;
}

https://www.newtonsoft.com/json使用此。已经有很多类似的话题。通过C#发送JSON并接收返回的JSON?

values.ToString()不会创建有效的JSON格式字符串。

我建议您使用JSON解析器,例如Json.NetLitJson将字典转换为有效的JSON字符串。这些库能够使用反射将通用对象转换为有效的JSON字符串,并且比手动序列化的速度要快于JSON格式(尽管必要时可以使用)。

请参阅此处以获取JSON字符串格式定义(如果您想手动序列化对象),以及底部的第三方库列表:http://www.json.org/

相关内容

  • 没有找到相关文章

最新更新