Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
带有json格式数组的C#Http请求_C#_Api_Rest_Web - Fatal编程技术网

带有json格式数组的C#Http请求

带有json格式数组的C#Http请求,c#,api,rest,web,C#,Api,Rest,Web,我刚刚接触过C#中的RESTAPI。这一定是一个非常基本的问题。因此,我正在执行一个http POST请求,请求主体中需要以下json格式: { "cars": [ { "carsRego": "ABC123" } ] } 如何序列化它?我想到了这个,但它给了我错误422:不可处理的实体错误 var cars = new[] { new

我刚刚接触过C#中的RESTAPI。这一定是一个非常基本的问题。因此,我正在执行一个http POST请求,请求主体中需要以下json格式:

{
"cars": [
   {
    "carsRego": "ABC123"
   }
 ]
}
如何序列化它?我想到了这个,但它给了我错误422:不可处理的实体错误

var cars = new[]
                {
                    new
                    {
                        carsRego = "ABC123"
                    }
                };
        

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = new JavaScriptSerializer().Serialize(new
            {
                cars
            }); 

            streamWriter.Write(json);
        }
谢谢大家!

如果您正在使用 .NET 5.0/6.0 .NET核心3.0或3.1

使用
System.Text.Json

例如:

  using Newtonsoft.Json;
  ...
  var cars = new[]
            {
                new
                {
                    carsRego = "ABC123"
                }
            };

   string output = JsonConvert.SerializeObject(cars);
string jsonString=JsonSerializer.Serialize(cars)

如果你正在使用 .NET标准2.0或更高版本 .NET Framework 4.7.2或更高版本 .NET核心2.0、2.1和2.2

您必须通过nuget安装System.Text.Json

如果您使用的是.net framework 4.7.2或更早版本,请使用newtonsoft.json:,或由nuget安装

例如:

  using Newtonsoft.Json;
  ...
  var cars = new[]
            {
                new
                {
                    carsRego = "ABC123"
                }
            };

   string output = JsonConvert.SerializeObject(cars);
试试这个:

创建类

public class CarsRegistration
{
    public string carsRego {get; set;}
}
现在您可以使用此代码

var cars = new Dictionary<string, CarsRegistration[]>
            {
             { "cars",  new CarsRegistration[]
                {
                    new CarsRegistration{ carsRego = "ABC123"}
                }
                }
            };

string output = JsonConvert.SerializeObject(cars);

var carsFromJson= JsonConvert.DeserializeObject<Dictionary<string, 
     CarsRegistration[]>> (output);

output = JsonConvert.SerializeObject(carsFromJson);


文章中显示的代码与产生上述错误极为不同。请查看关于张贴代码和相应问题的指南。旁注:大多数人使用NeNothSoop.JSON——虽然这绝对不是问题。考虑切换,因为它将给你更多的样本/机会来找到答案。如果这是一个API端点,你正在从JSON中恢复,使用<代码>返回JSOREST(MyStudialDATA);<代码>使用System.Text.Json。示例:string jsonString=
JsonSerializer.Serialize(cars)必须通过nugetSide安装注意:根据@AugustoFerbonink,您应该使用System.Text.Json或Newtonsoft.Json而不是JavaScriptSerializer,具体取决于目标框架,不必通过nuget安装,它是本机的。这一个可以工作。谢谢你,奥古斯托!!不客气。请把这个答案标为正确答案。