gpt4 book ai didi

c# - ASP.NET Core 3.0 System.Text.Json Camel Case 序列化

转载 作者:行者123 更新时间:2023-12-02 09:40:13 31 4
gpt4 key购买 nike

在ASP.NET Core 3.0 Web API 项目中,如何指定System.Text.Json自动序列化/反序列化 Pascal Case 属性到 Camel Case 的序列化选项,反之亦然?
给定一个具有 Pascal Case 属性的模型,例如:

public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
以及使用 System.Text.Json 将 JSON 字符串反序列化为 Person 类型的代码类(class):
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
除非 JsonPropertyName,否则不会成功反序列化与每个属性一起使用,例如:
public class Person
{
[JsonPropertyName("firstname")]
public string Firstname { get; set; }
[JsonPropertyName("lastname")]
public string Lastname { get; set; }
}
我在 startup.cs 中尝试了以下操作,但在仍然需要 JsonPropertyName 方面没有帮助:
services.AddMvc().AddJsonOptions(options =>
{
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});

// also the following given it's a Web API project

services.AddControllers().AddJsonOptions(options => {
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
如何使用新的 System.Text.Json 命名空间在 ASP.NET Core 3.0 中设置 Camel Case 序列化/反序列化?
谢谢!

最佳答案

AddJsonOptions()将配置 System.Text.Json仅适用于 MVC。如果您想使用 JsonSerializer在您自己的代码中,您应该将配置传递给它。

var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
};

var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Parse<Person>(json, options);

关于c# - ASP.NET Core 3.0 System.Text.Json Camel Case 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476681/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com