2014-07-23 4 views
7

Ich möchte den CamelCasePropertyNamesContractResolver für die OData JSON-Antwort verwenden. Wie kann ich das erreichen? Mit dem folgenden Code-Fragment werden nur die Webapi-Aufrufe berücksichtigt.OData JSON camelCase

Grüße

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); 
    } 
} 
+0

Will nur die Nutzlast in der Antwort als Kamel Fall serialisieren und die in der Anfrage ist immer noch Pascal Fall? –

+0

Sollte in beide Richtungen arbeiten (Anfrage Modell-Match sollte auch Arbeit sein) – Marko

Antwort

0

Diese Probe Ihre Anforderung erfüllen kann, nur aus dieser Datei starten:

Die Proben haben sich seitdem bewegt here.

8

können Sie die EnableLowerCamelCase Erweiterungsmethode verwenden:

using System.Web.OData.Builder; 
using System.Web.OData.Extensions; 

var builder = new ODataConventionModelBuilder(); 
builder.EnableLowerCamelCase(); 

Siehe auch: http://msdn.microsoft.com/en-us/library/dn746676%28v=vs.118%29.aspx.

+0

Was ist mit OData V3? – Adaptabi

+0

@DotNetWise: Ich denke - ohne überprüft zu haben -, dass Markos ursprüngliche Frage tatsächlich zeigt, wie man das mit OData V3 erhält. –