将 C# 枚举序列化为 JSON 字符串 基础理论

该转换过程需要引用 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# 枚举反序列化为 JSON 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- 将 C# 枚举序列化为 JSON 字符串 实践
一.定义枚举 public enum SiteTypeEnum { 中转部 = 1, 网点 = 2 } 还有 BooleanEnum 和 OptTypeEnum 这两个枚举,这里暂且省略了它们的定义. ...
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- 将 C# 枚举反序列化为 JSON 字符串 实践
一.定义枚举 public enum SiteTypeEnum { 中转部 = 1, 网点 = 2 } 还有 BooleanEnum 和 OptTypeEnum 这两个枚举,这里暂且省略了它们的定义. ...
- form表单序列化为json格式数据
在web开发过程中,经常遇到将form序列化不能格式的字符串提交到后台,下面就介绍怎样将form表单序列化为json字符串. 首先,是扩展的jquery序列化插件,依赖jquery.经测试,这段代码可 ...
- JS对象序列化为JSON对象的方法
var $ = $ || {}; /** * 将JS对象序列化为JSON字符串 * @param {Mixed} o The variable to decode * @return {String} ...
- @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化
@JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
随机推荐
- sqlserver 2017 docker安装(启动代理)
从 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像. docker pull microsoft/mssql-server-linux:2017-latest 运行 ...
- 在c/c++中调用Java方法
JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活的使用. 通过使用JNI可 ...
- python 3.3.2报错:No module named 'urllib2'
ModuleNotFoundError: No module named 'urllib3' 1. ImportError: No module named 'cookielib'1 Python3中 ...
- nginx+gunicorn项目部署
1.1安装虚拟环境 创建文件夹 mkdir data 目录文件夹 cd data 进入data文件夹 mkdir nginx 创建安装nginx的文件夹 mkdir server 存放代码的文件夹 m ...
- tcpdump抓包具体分析
Tcpdump抓包分析过程 一.TCP连接建立(三次握手) 过程 客户端A,服务器B,初始序号seq,确认号ack 初始状态:B处于监听状态,A处于打开状态 A -> B : seq = x ...
- kafka集群环境搭建(Linux)
一.准备工作 centos6.8和jvm需要准备64位的,如果为32位,服务启动的时候报java.lang.OutOfMemoryError: Map failed 的错误. 链接:http://pa ...
- DAG 动态规划 巴比伦塔 B - The Tower of Babylon
题目:The Tower of Babylon 这是一个DAG 模型,有两种常规解法 1.记忆化搜索, 写函数,去查找上一个符合的值,不断递归 2.递推法 方法一:记忆化搜索 #include < ...
- c++のurlmon实现下载文件并进度回调
主文件: #include "stdafx.h" #include <UrlMon.h> #pragma comment(lib, "urlmon.lib&q ...
- 使用with open语句(未完)
来源链接 https://blog.csdn.net/testcs_dn/article/details/45719357 读文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和 ...
- BZOJ1023:[SHOI2008]cactus仙人掌图(圆方树,DP,单调队列)
Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus). 所谓简单回路就是指在图上不重复经过任何一个顶点 ...