一、定义枚举

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. Python中For循环

    1. for i in range(10): print(i) 输出结果 F:\py\pyProject\venv\Scripts\python.exe F:/py/pyProject/venv/wh ...

  2. python之装饰器函数

    本章内容 引入 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 引入 作为一个会写函数的python开发,我们从今天开始要去公司上班了.写了一 ...

  3. tkinter做一个简单的登陆页面(十六)

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  4. Python3 下实现 腾讯人工智能API 调用

    1.背景 a.鹅厂近期发布了自己的人工智能 api,包括身份证ocr.名片ocr.文本分析等一堆API,因为前期项目用到图形OCR,遂实现试用了一下,发现准确率还不错,放出来给大家共享一下. b.基于 ...

  5. SAP SD模块功能构成

  6. MATLAB最小二乘法

    MATLAB最小二乘法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 三.实验程序 四.实验内容 设有如下数据: 用3次多项式拟合这组数据. 五.解答( ...

  7. Alpha冲刺博客汇总(麻瓜制造者)

    目录 Alpha冲刺报告 Github项目地址 测试报告与用户反馈博客地址 课程展示博客地址 事后诸葛亮 Alpha冲刺报告 Alpha冲刺报告(1/12)(麻瓜制造者) Alpha冲刺报告(2/12 ...

  8. 第一章 Bootstrasp起步

    模板如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf ...

  9. iframe无刷新跨域上传文件并获得返回值

    原文:http://geeksun.iteye.com/blog/1070607 需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用 ...

  10. 开启 J2EE(一)—‘全明星队伍’

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/akkzhjj/article/details/27973427 J2EE-一套规范 J2EE(Jav ...