如何获取camelCase JsonFormatter的元数据

时间:2013-05-23 15:24:25

标签: breeze

我在Global.asax中使用以下内容将格式更改为客户端上的camelCase。

        // Change Json data to camelCasing
        var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

此外,我们正在使用Unity,并且我有一个单独的服务和一个自定义的EFContextProvider类,用于重新生成在Controller中使用的元数据。我假设因为我在BreezeController之外生成元数据,然后它返回PascalCase中的元数据,我的代码首先使用DbContext。

最终结果是我获得PascalCased元数据(这看起来似乎不正确)和来自entityQueries的camelCased实体但不是可观察的敲除属性。任何有关我的实体无法观察的提示或想法都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您不需要使用ContractResolver,Breeze直接通过它的NamingConvention类处理:请参阅此页面上的NamingConvention讨论。 Breeze Docs - NamingConvention

基本上,您需要做的就是致电:

 breeze.NamingConvention.camelCase.setAsDefault(); // a convention can self-register as the default

答案 1 :(得分:0)

您可以使用BreezeConfig.Instance.GetJsonSerializerSettings()。ContractResolver实现此服务器端。

public static void RegisterBreezePreStart() {
 GlobalConfiguration.Configuration.Routes.MapHttpRoute(
  name: "BreezeApi",
  routeTemplate: "breeze/{controller}/{action}"
 );


 BreezeConfig.Instance.GetJsonSerializerSettings().ContractResolver 
                                        = new CamelCasePropertyNamesContractResolver();
}