将 C# 枚举序列化为 JSON 字符串 实践
2017-09-29 11:00
260 查看
一、定义枚举
public enum SiteTypeEnum { 中转部 = 1, 网点 = 2 }
还有 BooleanEnum 和 OptTypeEnum 这两个枚举,这里暂且省略了它们的定义。
二、服务端方法
这里总共转化了 3 个枚举public class UtilityController : BaseController { [CheckLogin] [HttpPost] public JsonResult GetEnumData() { JsonResult<object> result = new JsonResult<object>(); string booleanEnumJson = typeof(BooleanEnum).EnumToJson(); string siteTypeEnumJson = typeof(SiteTypeEnum).EnumToJson(); string optTypeEnumJson = typeof(OptTypeEnum).EnumToJson(); result.Data = new { enumData = new Dictionary<string, object>() { { "booleanEnumJson", booleanEnumJson }, { "siteTypeEnumJson", siteTypeEnumJson }, { "optTypeEnumJson", optTypeEnumJson } } }; return Json(result, JsonRequestBehavior.AllowGet); } }
注意,除了枚举自身名称之外,其余之处一律采用 -Json 后缀,方便识别。
三、客户端请求
1、数据定义服务端的枚举,对应于 js 端的数组
// 布尔值 var BooleanEnum = [ ]; // 网点类型 var SiteTypeEnum = [ ]; // 操作类型 var OptTypeEnum = [ ];
2、请求
此处的代码与上述定义同属一个 js 文件,这里不需要“自执行函数”,以确保枚举数组可以被全局访问。
$(document).ready(function () { var urlEnum = { GetEnumData: "/Utility/GetEnumData" }; // 发起请求 $.ajax({ data: {}, type: "POST", dataType: "JSON", async: false, url: urlEnum.GetEnumData, success: function (result) { console.info("返回的枚举数据为:↓ "); console.info(JSON.stringify(result.Data, null, 4)); if (result.Status) { var data = result.Data; bindData(data, "booleanEnumJson", "BooleanEnum", BooleanEnum); bindData(data, "siteTypeEnumJson", "SiteTypeEnum", SiteTypeEnum); bindData(data, "optTypeEnumJson", "OptTypeEnum", OptTypeEnum); } else { // 提示失败 alert(result.StatusMessage); } } }); // end ajax /* * 绑定数据 * data 数据源 * targetArray 数组变量 */ function bindData(data, stringJson, typeOfEnum, targetArray) { // 布尔值 var enumJson = $.parseJSON(data.enumData[stringJson])[typeOfEnum]; $.each(enumJson, function (text, val) { var obj = { name: text, value: val }; targetArray.push(obj); }); } });
参数说明:
参数名 | header含义 |
---|---|
data | 包含所有枚举的数据源 |
stringJson | Dictionary 的键,比如 siteTypeEnumJson |
typeOfEnum | 枚举名称,比如 SiteTypeEnum |
targetArray | js 数组变量 |
相关文章推荐
- 将 C# 枚举序列化为 JSON 字符串 基础理论
- 将json字符串反序列化为DataTable
- c# Enum 枚举 转 list 再转 json 字符串
- 将long数字序列化为json时,转换为字符串
- C#实现将类的内容写成JSON格式字符串的方法
- 【转载】C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte
- C#获取json字符串指定的值
- 把一个json字符串转换成对应的c#类型
- C#序列、反序列化json对象
- C#之json字符串转xml字符串
- C#反序列化json字符串时,提示:应为来自命名空间“”的元素“root”。。遇到名称为“”、命名空间为“”的“None”。
- 也谈C#之Json,从Json字符串到类代码
- 如何使用MongoDB自带的json库来反序列json字符串
- C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
- C# Winform反序列化复杂json字符串
- C# 解析json字符串,讲json字符串转换成类
- C# 枚举和字符串互转
- C#解析JSON字符串总结
- c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值