代码之家  ›  专栏  ›  技术社区  ›  Peter Wone

如何配置WebApi以在不更改对象属性名大小写的情况下序列化对象

  •  0
  • Peter Wone  · 技术社区  · 7 年前

    当我直接从WebApi2方法返回一个动态对象(从Dapper获得)时,属性的大小写不会受到影响,并且与查询SQL中定义的列名大小写完全匹配。

    这是切向相关的: Web API 2: how to return JSON with camelCased property names, on objects and their sub-objects

    我该如何配置序列化来管好它自己的事并传递名称呢 不变 ?

    不是强迫骆驼案或帕斯卡案,只是通过。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Peter Wone    7 年前

    答案似乎不会很快出现,而且我对最佳策略的立场已经改变,因此我将通过描述我如何处理不一致的序列化行为这一潜在问题来回答我自己的问题。

    事实上,强制套管模式的业务是一致性和可预测性。行为是什么其实并不重要,只要是可预测的。

    强制提高了可预测性:这是其中之一,您可以通过一个设置更改webapi的所有结果。所以强迫更好,问题从“我怎样才能防止强迫?”变成了“我怎样才能使动力学像其他类型一样被强迫?”

    答案就在这里: .NET Core json serialization of properties on dynamic (ExpandoObject)

    这个答案适用于核心1,下面是如何对核心2执行相同的操作

    // in Startup.cs
    public void ConfigureServices(IServiceCollection services)
    {
      . . .
      services.AddMvc().AddJsonOptions(options =>
      {
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
      });
      . . .
    }