C# 带有 JSON 数组的 Http 请求

问题描述 投票:0回答:2

我刚刚接触了C#中的REST API。这一定是一个非常基本的问题。所以我正在做一个 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);
        }
c# rest
2个回答
0
投票

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

使用

System.Text.Json

示例:

string jsonString = JsonSerializer.Serialize(cars);

如果您正在使用 .NET Standard 2.0 或更高版本 .NET Framework 4.7.2 或更高版本 .NET Core 2.0、2.1 和 2.2

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

如果您使用 .net Framework 4.7.2 或更早版本,请使用 newtonsoft.json:https://www.newtonsoft.com/,或通过 nuget 安装。

示例:

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

   string output = JsonConvert.SerializeObject(cars);

0
投票

试试这个:

创建班级

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);

输出

{"cars":[{"carsRego":"ABC123"}]}
© www.soinside.com 2019 - 2024. All rights reserved.