一、定义枚举

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. 记录C/C++中遇到的一些小问题

    1. printf 比如 char a = \x90; printf("%02x", a); 想输出为90,没想到却是ffffff90,这个问题害我一个程序老是出错 最终发现只要改 ...

  2. 用Python实现数据结构之树

    树 树是由根结点和若干颗子树构成的.树是由一个集合以及在该集合上定义的一种关系构成的.集合中的元素称为树的结点,所定义的关系称为父子关系.父子关系在树的结点之间建立了一个层次结构.在这种层次结构中有一 ...

  3. 安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法

    在安装Microsoft .NET Framework 4.6.2脱机包时提示 无法建立到信任根颁发机构的证书链 实际上是要安装一个根证书.解决方案如下(因无法贴链接,可百度搜索“mamicode.c ...

  4. Redis和Memcached的一些区别

    我们都知道,把一些热数据存到缓存中可以极大的提高速度,那么问题来了,是用Redis好还是Memcached好呢,以下是它们两者之间一些简单的区别与比较: 1. Redis不仅支持简单的k/v类型的数据 ...

  5. Linux监控命令整理(top,free,vmstat,iostat,mpstat,sar,netstat)

    1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...

  6. unhandled exception(没有处理异常)

    背景 今天在代码中抛出了Exception类, 但是出现了代码报错 意思是,未处理异常 原因 因为Exception是check异常,也就是必须在代码层面直接捕获处理的,这类异常有IOExceptio ...

  7. matlab slice

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  8. MATLAB——神经网络init初始化函数和adapt函数

  9. labellmg使用方法

    https://www.cnblogs.com/Terrypython/p/9577657.html

  10. PAT A1145 Hashing - Average Search Time (25 分)——hash 散列的平方探查法

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...