2015-12-18 2 views
1

После следующей конфигурации JsonFormatter ContractResolver от PascalCase (по умолчанию) на случай верблюда я получаю следующий вывод Json в случае с верблюдом.Web API 2 Json Вывод в нижнем корпусе и подстроке

Но, я предпочитаю получить выход Json в Нижний корпус вместе с подчеркиванием (верхний регистр должен быть заменен символом подчеркивания). Есть идеи? :)

protected void Application_Start() 
{ 
    GlobalConfiguration.Configure(WebApiConfig.Register); 

    EnableCamelCase(); 
} 

private void EnableCamelCase() 
{ 
    HttpConfiguration config = GlobalConfiguration.Configuration; 
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
    config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false; 
} 

Свойства Класс

public int MenuId { get; set; } 
public byte TypeId { get; set; } 
public string MenuName { get; set; } 
public string Description { get; set; } 
public string Tooltip { get; set; } 
public byte? Minimum { get; set; } 
public byte? Maximum { get; set; } 
public bool CanMultiSelect { get; set; } 
public byte SortOrder { get; set; } 

верблюд Дело Json Выходные

"items": [ 
    { 
     "menuId": 82, 
     "typeId": 1, 
     "menuName": "dsf", 
     "description": "sdafsdafsd", 
     "tooltip": null, 
     "minimum": null, 
     "maximum": null, 
     "canMultiSelect": false, 
     "sortOrder": 0 
    }, 
    { 
     "menuId": 83, 
     "typeId": 1, 
     "menuName": "sdfad", 
     "description": "fsdfda", 
     "tooltip": null, 
     "minimum": null, 
     "maximum": null, 
     "canMultiSelect": false, 
     "sortOrder": 0 
    } 
]} 

Предпочтительный выход

"items": [ 
    { 
     "menu_id": 82, 
     "type_id": 1, 
     "menu_name": "dsf", 
     "description": "sdafsdafsd", 
     "tooltip": null, 
     "minimum": null, 
     "maximum": null, 
     "can_multi_select": false, 
     "sort_order": 0 
    }, 
    { 
     "menu_id": 82, 
     "type_id": 1, 
     "menu_name": "dsf", 
     "description": "sdafsdafsd", 
     "tooltip": null, 
     "minimum": null, 
     "maximum": null, 
     "can_multi_select": false, 
     "sort_order": 0 
    } 
]} 

ответ

2

Вам понадобится создать собственный ContractResolver, который наследуется от DefaultContractResolver. См. the Newtonsoft documentation. Затем вы можете обойти символы в имени свойства и вставить знак подчеркивания/сделать символ в нижнем регистре соответствующим.

+0

Спасибо. Теперь я работаю. Ура! –