Web API 2 Json 以小写和下划线输出
Web API 2 Json Output in Lower Case and Underscore
在将以下 JsonFormatter 的 ContractResolver 配置从 PascalCase(默认)转换为驼峰式后,我得到以下 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;
}
Class 属性
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
}
]}
您需要创建一个继承自 DefaultContractResolver 的自定义 ContractResolver。参见 the Newtonsoft documentation。然后,您可以循环 属性 名称中的字符并插入下划线/根据需要使字符小写。
在将以下 JsonFormatter 的 ContractResolver 配置从 PascalCase(默认)转换为驼峰式后,我得到以下 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;
}
Class 属性
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
}
]}
您需要创建一个继承自 DefaultContractResolver 的自定义 ContractResolver。参见 the Newtonsoft documentation。然后,您可以循环 属性 名称中的字符并插入下划线/根据需要使字符小写。