我刚刚接触了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);
}
如果您正在使用 .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);
试试这个:
创建班级
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"}]}