将 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 这两个枚举,这里暂且省略了它们的定义. ...
- 将 C# 枚举序列化为 JSON 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- 如何将C#对象转化为JSON字符串
System.Web.Extensions.dll中类JavaScriptSerializer可以帮助我们把C#对象转化为JSON字符串. 有一个Person类 public class Person ...
- js如何生成一个对象,并转化为json字符串
js如何生成一个对象,并转化为json字符串,很多人都会误写为: var ary = []; var obj = {}; for (var i = 0; i < 3; i++) { obj.na ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- json字符串转化为json对象and 对象转化为 json字符串
第一种方法: var data =evel('('+jsonstr+')') 解析: 这种方法是常用的方法, 即动态执行 javascript代码 在堆中存放数据. 存在安全问题. 第二种方法: ...
- 将数组转化为json字符串(不使用json_encode函数)
将数组转化为json字符串(不使用json_encode函数) public function arrayToJson($arr,$jsonStr=''){ $jsonStr.='{'; foreac ...
随机推荐
- 带你简单了解python协程和异步
带你简单了解python的协程和异步 前言 对于学习异步的出发点,是写爬虫.从简单爬虫到学会了使用多线程爬虫之后,在翻看别人的博客文章时偶尔会看到异步这一说法.而对于异步的了解实在困扰了我好久好久,看 ...
- 交换机的Ethernet Channel
端口聚合也叫做以太通道(ethernet channel),主要用于交换机之间连接.由于两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环 路产生.但是 ...
- 【Beta阶段】第五次scrum meeting
Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 查阅换肤功能相关资料 100% 着手联网功能 100 DEV 完成分享邀请 ...
- Swing-布局管理器之GridLayout(网格布局)-入门
注:本文内容源自于三十一.Java图形化界面设计——布局管理器之GridLayout(网格布局),笔者在学习过程中根据自身理解修改了部分代码. 网格布局特点: l 使容器中的各组件呈M行×N列的网格 ...
- 201521123075 《Java程序设计》第7周学习总结
1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码为 public boolean contains(Object o) ...
- 201521123076 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- 201521123032 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- JAVA课程设计-计算器(201521123028 李家俊)
1.团队课程设计博客链接 http://www.cnblogs.com/DevilRay/p/7064482.html 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出 ...
- wampserver启动不起来的原因?
如果没怎么动wamp的配置文件就发现wampserver启动不起来了,那么可能你碰到了iis服务器. 原因是apache的端口占用的是80,而iis的端口占用也是80所以造成了不能启动wampserv ...
- jquery-easyUI第一篇【介绍、入门、使用常用的组件】
什么是easyUI 我们可以看官方对easyUI的介绍: easyUI就是一个在Jquery的基础上封装了一些组件-.我们在编写页面的时候,就可以直接使用这些组件-非常方便-easyUI多用于在后台的 ...