首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JSON响应camelCasing内核中关闭或处理ASP.NET?

如何在JSON响应camelCasing内核中关闭或处理ASP.NET?
EN

Stack Overflow用户
提问于 2016-08-02 18:43:39
回答 9查看 40.4K关注 0票数 63

我正在ASP.NET核心/Web/Range2上运行一个ASP.NET课程,我已经实现了ASP.NET部分,但是由于任何原因,返回的JSON的变量名都被降低了。

返回的JSON格式如下..。

代码语言:javascript
复制
[
 {"id":1,"name":"Bowler","color":"black","count":1},
 {"id":2,"name":"Fedora","color":"red","count":1},
 {"id":3,"name":"Baseball Cap","color":"blue","count":3}
]

我期待着..。

代码语言:javascript
复制
[
 {"Id":1,"Name":"Bowler","Color":"black","Count":1},
 {"Id":2,"Name":"Fedora","Color":"red","Count":1},
 {"Id":3,"Name":"Baseball Cap","Color":"blue","Count":3}
]

基于…的C#模型。

代码语言:javascript
复制
namespace HatCollection.Models
{
    public class Hat
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Color { get; set; }
        public int Count { get; set; }
    }
}

我甚至还用[DataMember(Name = "Id")]来装饰这些房产,只是为了确保这并不重要。

在偶然的情况下,它与控制器中的动作和实例变量相关.

代码语言:javascript
复制
private static readonly List<Hat> MyHats = new List<Hat>
{
    new Hat {Id = 1, Name = "Bowler", Color = "black", Count = 1 },
    new Hat {Id = 2, Name = "Fedora", Color = "red", Count = 1 },
    new Hat {Id = 3, Name = "Baseball Cap", Color = "blue", Count = 3 }
};

[HttpGet]
public IEnumerable<Hat> Get()
{
    return MyHats;
}

如何关闭camelCase功能,以便ASP.NET核心在不更改属性名称的情况下返回它们?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2016-08-02 18:54:19

在ASP.NET Core <3.0中,JSON属性默认为camelCased (每个本公告)。

您可以通过替换

代码语言:javascript
复制
services.AddMvc();

使用

代码语言:javascript
复制
services
    .AddMvc()
    .AddJsonOptions(opt => opt.SerializerSettings.ContractResolver
        = new DefaultContractResolver());

在Startup.cs文件中。您必须将using Newtonsoft.Json.Serialization;添加到文件的顶部。

DefaultContractResolver就位后,属性名称将逐字表示在JSON输出中。不需要DataMember属性。

票数 26
EN

Stack Overflow用户

发布于 2019-09-27 12:56:45

在Asp.Net Core3.0中,有些事情发生了变化。对于camelCase来说,什么都不做。对于PascalCase或其他设置样式使用。

代码语言:javascript
复制
services.AddMvc(setupAction=> {
            setupAction.EnableEndpointRouting = false;
        }).AddJsonOptions(jsonOptions =>
        {
            jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = null;
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

在Startup.cs ConfigureServices部分

票数 57
EN

Stack Overflow用户

发布于 2019-11-25 13:12:35

对于那些需要一个关于Api项目中没有Mvc服务的PascalCase的解决方案的人,您应该在AddControllers服务之后添加这个

代码语言:javascript
复制
 // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers().AddJsonOptions(jsonOptions =>
                {
                    jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = null;
                } ;
        }
票数 51
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38728200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档