【问题标题】:OData JSON camelCaseOData JSON 骆驼案例
【发布时间】:2014-09-14 13:57:01
【问题描述】:

我想将 CamelCasePropertyNamesContractResolver 用于 OData JSON 响应。我怎样才能做到这一点。对于以下代码片段,仅考虑 webapi 调用。

问候

WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // New code:
        ODataModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Configuration>("Configurations");
        config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "odata",
            model: builder.GetEdmModel());

        config.Routes.MapHttpRoute(
            name: "API Default",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        config.Formatters.Remove(config.Formatters.XmlFormatter);
    }
}

Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();


        var config = GlobalConfiguration.Configuration;
        var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
        config.Formatters.JsonFormatter.SerializerSettings = settings;

        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

【问题讨论】:

  • 只想将响应中的payload序列化为camel case,而request中的payload仍然是pascal case?
  • 应该双向工作(请求模型匹配也应该工作)

标签: asp.net-mvc json odata asp.net-web-api2


【解决方案1】:

此示例可能满足您的要求,只需从该文件开始:

样本已经转移到here

【讨论】:

    【解决方案2】:

    你可以使用EnableLowerCamelCase扩展方法:

    using System.Web.OData.Builder;
    using System.Web.OData.Extensions;
    
    var builder = new ODataConventionModelBuilder();
    builder.EnableLowerCamelCase();
    

    另请参阅:http://msdn.microsoft.com/en-us/library/dn746676%28v=vs.118%29.aspx

    【讨论】:

    • OData V3 怎么样?
    • @DotNetWise:我认为 - 诚然,没有检查过 - Marko 的原始问题实际上展示了如何使用 OData V3 获得此信息。
    猜你喜欢
    • 2017-05-08
    • 2020-02-10
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多