将 C# 枚举序列化为 JSON 字符串 基础理论
2017-09-28 12:16
387 查看
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的。
一、定义枚举
/// <summary> /// 托寄物品枚举 /// </summary> public enum DeliveryGoodsEnum { 文件 = 1, 数码产品 = 2, 生活用品 = 3, 服饰 = 4, 食品 = 5, 其他 = 6 }
通常来说,这些值会绑定于类似下拉框这样的控件中,一个用于显示文本(text),一个则是值(value)。
二、定义转换方法
public static class EnumExtensions { public static string EnumToJson(this Type type) { if (!type.IsEnum) throw new InvalidOperationException("enum expected"); var results = Enum.GetValues(type).Cast<object>() .ToDictionary(enumValue => enumValue.ToString(), enumValue => (int) enumValue); return string.Format("{{ \"{0}\" : {1} }}", type.Name, Newtonsoft.Json.JsonConvert.SerializeObject(results)); } }
在以上转换过程中,枚举首先被转化为字典,接着才被序列化为字符串。
三、转换成 JSON 字符串并组织起来发往客户端
以 ASP.NET MVC 3 环境为例:// 托寄物品 string deliveryGoodsEnumJson = typeof(DeliveryGoodsEnum).EnumToJson(); // 付款方式 string paymentModeEnumJson = typeof(PaymentModeEnum).EnumToJson(); // 嘱咐 string expectationEnumJson = typeof(ExpectationEnum).EnumToJson(); result.Data = new { enumData = new Dictionary<string, object>() { { "deliveryGoods", deliveryGoodsEnumJson }, { "paymentMode", paymentModeEnumJson }, { "expectation", expectationEnumJson } } }; return Json(result, JsonRequestBehavior.AllowGet);
四、JS 提取枚举值并呈现
var data = result.Data; // 托寄物品 var deliveryGoods = $.parseJSON(data.enumData.deliveryGoods).DeliveryGoodsEnum; $ddlDeliveryGoods.empty(); $.each(deliveryGoods, function (key, val) { console.log(key + ":" + val); $ddlDeliveryGoods.append("<li val='" + val + "'>" + key + "</li>"); });
通过 $.parseJSON() 转换为 JSON 对象,然后遍历枚举各项。
相关文章推荐
- 将 C# 枚举序列化为 JSON 字符串 实践
- 【C#基础知识】之常量、变量、枚举、字符串、转义符、运算符及表达式、try...catch等简单介绍
- 将long数字序列化为json时,转换为字符串
- c# Enum 枚举 转 list 再转 json 字符串
- 将json字符串反序列化为DataTable
- C#基础---C#如何对Json字符串处理
- C#基础技巧--字符串处理函数
- C#基础 字符串与数组
- C#控制台基础 得到一个字符串中每个字母出现的次数
- C#基础(一)字符串String
- C#reflectBasic(C#反射基础)--理论篇
- C#中字符串的字面值(转义序列)
- 【1】C#基础:数据类型、运算、随机、枚举、结构、数组、列表、文件和文件流、序列化、MD5
- C#基础知识梳理系列七:字符串
- C# 枚举、字符串、值的相互转换
- c#基础知识---枚举
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- 由json字符串生成C#实体类的工具
- c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service