【问题标题】:.Net Core 5 System.Text.Json CamelCase is not applied by default.Net Core 5 System.Text.Json CamelCase 默认不应用
【发布时间】:2021-09-14 11:53:19
【问题描述】:

根据https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-5.0 CamelCase 应该是 System.Text.Json 的默认格式。

然而,我得到了 PascalCase,即第一个 char 是大写字母。

我尝试添加

services.AddControllers().AddJsonOptions(option => option.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase); 

到 Startup,正如预期的那样没有区别。

如果我添加

   var options = new JsonSerializerOptions
    {
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    };
    return Ok(JsonSerializer.Serialize(collection, options));

到特定的序列化器,然后我得到 camelCase,即第一个 char 小写。

其他人看到了吗?我用错了吗?

【问题讨论】:

  • 你能分享一个 minimal reproducible example 的帕斯卡案例在骆驼案例应该被退回的情况下吗?例如。 collection 可能包含具有显式 [JsonPropertyName] 属性的属性,或被序列化为字典的 ExpandoObject 对象,我们不知道您显示的内容。

标签: .net system.text.json asp.net-core-5.0


【解决方案1】:

对于网络核心,我建议你安装 NewtonsoftJson 并尝试一下

services.AddControllersWithViews()
//or
services.AddControllers()
    .AddNewtonsoftJson(options =>
           options.SerializerSettings.ContractResolver =
              new CamelCasePropertyNamesContractResolver());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2018-05-27
    • 2022-11-21
    • 2021-12-29
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多