一、定义枚举

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 字符串 实践的更多相关文章

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

    该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...

  2. 将 C# 枚举反序列化为 JSON 字符串 实践

    一.定义枚举 public enum SiteTypeEnum { 中转部 = 1, 网点 = 2 } 还有 BooleanEnum 和 OptTypeEnum 这两个枚举,这里暂且省略了它们的定义. ...

  3. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

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

    该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...

  5. form表单序列化为json格式数据

    在web开发过程中,经常遇到将form序列化不能格式的字符串提交到后台,下面就介绍怎样将form表单序列化为json字符串. 首先,是扩展的jquery序列化插件,依赖jquery.经测试,这段代码可 ...

  6. JS对象序列化为JSON对象的方法

    var $ = $ || {}; /** * 将JS对象序列化为JSON字符串 * @param {Mixed} o The variable to decode * @return {String} ...

  7. @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化

    @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...

  8. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  9. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

随机推荐

  1. maven(六),外置maven运行环境配置

    外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven 下载地址: http://maven.apache.org/download.cgi ...

  2. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  3. EasyUI DataGrid自适应高度

    我的页面分为上下两部分,但发现下面有DataGrid的高度总是自动改,数据根本显示不出来. 后来在博客园里看到这个:http://www.cnblogs.com/xienb/archive/2013/ ...

  4. localStorage 知识点

    先补充下localStorage 知识点:JS对象读取形式:localStorage.name添加/修改localStorage.name = "xuanyuan"其中" ...

  5. Django基础之urls

    一  Django简介 二   视图层之应用系统 一  Django简介 Django:   urls:路径与视图函数的映射关系   views:逻辑处理   models:与数据库相关的操作   t ...

  6. centos7下安装docker(13docker存储)

    Docker为容器提供了两种存放数据的资源: 1.storage driver管理的镜像层和容器层 2.Data volume Storage driver 之前我们学习镜像的时候知道镜像的分层结构: ...

  7. centos7下安装docker(9容器对资源的使用限制-内存)

                  一个docker Host上面会运行若干容器,每个容器都需要CPU,内存和IO资源.容器提供了控制分配多少CPU,内存给每个容器的机制,避免摸个容器因占用太多资源而影响其他 ...

  8. 【洛谷】【计数原理+Floyed】P1037 产生数

    [题目描述:] 给出一个整数 n \((n<10^{30})\) 和 k 个变换规则\((k≤15)\) . 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如: n=234 .有 ...

  9. oracle11gR2 手工创建基于asm存储的oracle实例

    http://www.cnblogs.com/beanbee/archive/2012/09/22/2697689.html使用命令行手工建立Oracle11gR2数据库 通过命令行建立一个数据库可以 ...

  10. CSS3渐变——径向渐变

    上节在<再说CSS3渐变——线性渐变>和大家一起学习了CSS3 Gradient中径向渐变最新语法(称得上是W3C的标准语法)相关知识以及其基本使用.今天我们在这一篇中主要和大家一起来了解 ...