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

一、定义枚举
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 字符串 实践的更多相关文章
- 将 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 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- 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对 ...
随机推荐
- 安全之路 —— 无DLL文件实现远程线程注入
简介 在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门.但一个.exe文件总要在注入时捎上一个.dll文件着 ...
- 17秋 软件工程 第二次作业 sudoku
2017年秋季 软件工程 作业2:个人项目 sudoku Github Project Github Project at Wasdns/sudoku. PSP Table PSP2.1 Person ...
- DataUtils对Connection的获取、释放和关闭的操作学习
DataSourceUitls介绍 DataSourceUitls类位于org.springframework.jdbc.datasource包下,提供了很多的静态方法去从一个javax.sql.Da ...
- Ajax进阶之原生js与跨域jsonp
什么是Ajax? 两个数求和: 用Jquery和数据用json格式 viws函数: from django.shortcuts import render,HttpResponse # Create ...
- 手把手教你解析Resources.arsc
http://blog.csdn.net/beyond702/article/details/51744082 一.前言 对于APK里面的Resources.arsc文件大家应该都知道是干什么的(不知 ...
- Hadoop 基本概念
一.Hadoop 简介 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储. 从其定 ...
- B+ Tree vs B Trees
原文地址:https://blog.csdn.net/dashuniuniu/article/details/51072795 引子 最近一直回顾自己曾经写的一些文档,有一篇是关于 Clang Rew ...
- Shell获取指定时间
时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...
- 导入其他python文件或者python文件的函数
from abc import xxx 从abc的py文件导入一个具体的函数或者类 import abc 直接导入文件 a.b写在同一个文件目录下,a要使用b,直接import就可以了
- 安装Docker和配置加速器(二)
一. 安装 docker-ce 1. 访问 https://opsx.alibaba.com/mirror 2. 打开这条URL: 二.Ubuntu 系统安装 Docker 1. 使用apt-get进 ...