当前位置: 首页 > 面试题库 >

ASP.NET Core 3.0 System.Text.Json Camel案例序列化

昌栋
2023-03-14
问题内容

在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类类型的代码:

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


 类似资料:
  • 问题内容: 我正在反序列化使用的对象,该对象包含Guid类型的私有字段和该字段的公共属性。当我的json中的my的值为null时,我想分配给我的字段。 但是想要访问私有字段,导致在尝试反序列化时出现此错误: 将值{null}转换为类型’System.Guid’时出错。路径“ [0]。属性”,第6行,位置26。 如何使其忽略私有字段,而使用公共属性? 问题答案: Json.NET拒绝为a 设置值,因

  • 因此,我有一个Spring Boot应用程序,它必须接受参数为“some_value=1500”的GET请求 我试过@JsonProperty(“some_value”),但没有成功。我已经将spring.jackson.property命名策略=SNAKE_CASE添加到我的application.properties文件中,但它仍然不起作用。 重要细节:当我尝试序列化一个对象时,它确实会转换一

  • 在 ASP.NET Core 3.0 Web API 项目中,如何指定 System.Text.Json 序列化选项以将 Pascal Case 属性序列化/反序列化为 Camel Case,反之亦然? 给定一个具有 Pascal Case 属性的模型,例如: 以及使用System.Text的代码。Json将Json字符串反序列化为类的类型: 不会成功反序列化,除非JsonProperty tyN

  • Wego DBWeb Godaily - github FXH Blog Gos Gobook

  • Gitea - github.com/go-gitea/gitea Gogs - github.com/gogits/gogs grafana - github.com/grafana/grafana Go语言中文网 - github.com/studygolang/studygolang github.com/m3ng9i/qreader Wego Docker.cn Xorm Adapter

  • Gitea - github.com/go-gitea/gitea Gogs - github.com/gogits/gogs grafana - github.com/grafana/grafana Go语言中文网 - github.com/studygolang/studygolang github.com/m3ng9i/qreader Wego Docker.cn Xorm Adapter