Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为HttpClient Post方法准备Json对象_C#_Json_Json.net_Http Post_Dotnet Httpclient - Fatal编程技术网

C# 为HttpClient Post方法准备Json对象

C# 为HttpClient Post方法准备Json对象,c#,json,json.net,http-post,dotnet-httpclient,C#,Json,Json.net,Http Post,Dotnet Httpclient,我正在尝试为Post方法准备一个JSON负载。服务器无法解析我的数据ToString()方法无法正确地将其转换为JSON,请您建议一种正确的方法 var values = new Dictionary<string, string> { { "type", "a" } , { "card", "2" } }; var data = new StringContent(values.ToSttring(), Encod

我正在尝试为Post方法准备一个JSON负载。服务器无法解析我的数据<我的值上的code>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;
}
var值=新字典
{
{
“类型”、“a”
}
, {
“卡”、“2”
}
};
var data=newstringcontent(values.ToSttring(),Encoding.UTF8,“application/json”);
HttpClient=新的HttpClient();
var response=client.PostAsync(myUrl,data).Result;
使用(HttpContent=response.content)
{
结果=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
values.ToString()
将不会创建有效的JSON格式字符串

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


请参见此处的JSON字符串格式定义(如果您希望手动序列化对象),以及底部的第三方库列表:

您是否查看了
value.ToString()
生成的内容?查看
JsonConvert
类。服务器调用的签名是什么样子的?@fran这是一个远程api,我没有机会去看它,它是一个只接受Json的支付网关,不能使用任何其他库。将尝试手动序列化或通过@Nkosi建议的PostAsJsonAsync方法序列化。@RkRBairi我建议的两个选项都使用Json.Net.Worth指出,这两个选项都需要第三方库Json.Net(后者是该库提供的扩展方法)。截至发帖时,Json.Net的下载位置是:@nkosi,只是出于好奇,哪些平台允许使用postsjsonasync?@MiguelMateo看看API文档
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;
}