Json——js和C#对Json的操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式。博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Android调用C#的Webservice的接口,就是通过Json这种格式来传递数据的。就是因为这种完全独立于语言的数据格式,所以在系统的前后台被广泛使用。本篇用来记录下前端JS以及后端C#里面JSON的一些常用的操作方法。笔记笔记,好记性不如多笔记~~
JS前端JSON操作:
一、Json数据转字符串:
var myList = [ { Name: "Jim", Age: 20 }, { Name: "Kate", Age: 21 }, { Name: "Lilei", Age: 18 }, { Name: "John", Age: 14 }, { Name: "LinTao", Age: 25 } ];
方法一:
var oString2 = JSON.stringify(myList);
结果
这个方法是js中JSON对象内置的。可以直接使用。
方法二:
var oString1 = myList.toJSONString();
这个方法需要json.js的支持。直接使用会报异常。
二、string字符串转JSON对象:
方法一:
var oString2 = JSON.stringify(myList); var oJson1 = eval(oString2);
eval()方法是内置的。可直接使用。
方法二:
var oJson2 = $.parseJSON(oString2);
需要jQuery的支持。
方法三:
var oJson3 = JSON.parse(oString2);
是js内置的,可以直接使用。
方法四:
var oJson4 = String.parseJSON(oString2);
需要引json.js文件。
综上所述:在js里面JSON变量操作不需要引用任何文件直接使用的方法有JSON.stringify(myList)、JSON.parse(oString2)、eval(oString2)。
C#后台JSON处理:
在C#里面,Json可以理解为一种匿名对象,每一个键值对就可以理解为对应对象的属性和值。在后端Json这种格式一般用于对象的序列化:
public void JsonTooo() { string jsonStr = "{\"name\":\"tom\",\"age\":11}"; //jsonStr 为json格式的字符串 JavaScriptSerializer json = new JavaScriptSerializer(); //实例化一个能够序列化数据的类 ToJson list = json.Deserialize<ToJson>(jsonStr); //将json数据转化为对象类型并赋值给list string Name = list.name; //Name的值为tom.. list可点出name }
那么肯定就有一个对象和它对应。
public class ToJson { public string name { get; set; } //属性的名字,必须与json格式字符串中的"key"值一样。 public string age { get; set; } }
这种对应关系的转换序列化方式前面已经说了很多了。在此就不多说。
MVC里面更是很好的支持了后台程序对Json数据的支持。比如Controller里面JsonResult对象
public JsonResult GetEditModel(string strType) { var lstRes = new List<DragElementProp>(); List<PageProperty> lstRes = new List<PageProperty>(); return Json(new { lstDataAttr = lstRes, PageAttr = lstPageAttrs }, JsonRequestBehavior.AllowGet); }
只需要DraElementProp和PageProperty这两个对象支持对象可序列化,就可以直接将对象传到前端:
[DataContract] public class PageProperty { [DataMember] public string Id { get; set; } [DataMember] public string Width { get; set; } [DataMember] public string Height { get; set; } [DataMember] }
前端和后端通信使用Ajax的时候大部分情况是通过Json数据进行数据交互的。这个时候需要指定datatype类型为json。
$.Gmzp.AjaxPost = function (strUrl, oParams, funSuccessCallback, funErrorCallback, funFinishCallback) { $.ajax({ type: "POST", url: strUrl, data: oParams,
async: false,//false为阻塞请求
dataType: "json", success: funSuccessCallback, error: funErrorCallback, complete: funFinishCallback }); };
相关文章
- CefSharp F12打开DevTools查看console js和c#方法互相调用
- 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB(干货 | 建议珍藏) c#自定义Attribute获取接口实现 纯JS ajax 聊聊DataTable下载 二进制数据的序列化反序列化和Json的序列化反序列化的重要区别
- 1 时间戳 2 C# 如何生成一个时间戳 3 js 时间加一分钟... 4 js string->date 5 js 取得当天0点 / 23:59:59 时间
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了 [WPF]为旧版本的应用添加触控支持 js css等静态文件版本控制,一处配置多处更新.net版【原创】 C#图片处理,缩略图制作 SqlDataReader 结果集 转成 DataTable DataTable转成List集合 如何使用linq读取DataTable集合?
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- c# 解码 js的escape
- c#+JS原生上传图片、文件支持多文件上传
- C#,入门教程(30)——扎好程序的笼子,错误处理 try catch
- C# 中的 is 真的是越来越强大,越来越语义化
- c#中一个进程启动另一个进程并传递参数
- C#自定义应用程序上下文对象+IOC自己实现依赖注入
- GET到新技能,SharpCEF,C#和JS的互相调用
- Visual C# 2010入门经典》一1.4 编写第一个程序
- C#多线程之Thread,ThreadPool,Task,Parallel
- C#如何操作XML文件
- c# 计算目录的大小
- C#中的委托与事件
- C#使用log4net记录日志(项目中用的此方法,在类库里面写的)
- 对特殊字符编码js与c#中的处理方法
- C#学习之开关控件picturebox
- <Machine Learning in Action >之二 朴素贝叶斯 C#实现文章分类
- Unity 热更 C#(编译型语言) 和 lua(解释型语言) 比较
- c# winform 调用js
- 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
- C# 多线程之List的线程安全问题