程序员Web面试之JSON
JSON是什么?
JSON(JavaScript对象表示法), 是在网络通信下,常用的一种数据表达格式,它有助于我们于一个自描述的,独立的和轻的方式呈现并交换数据。这些数据可以易于和转换为JavaScript对象。
JSON格式的最大优点: 它可以被很容易得被转换为一个javascript对象。例如,下面的代码片段中看到的,我们有一个JSON格式的数据里面有“姓名”,“街道”,“年龄”和“手机”。
<script type="text/javascript"> var JSONObject= {"name":"John Johnson","street":"Oslo West 555", "age":33,"phone":"555 1234567"}; alert(JSONObject.name); </script>
现在,这个数据可以直接使用,如我们可获得JSONObject的对象,并很方便的调用其“name”属性。
是否用SOAP可以做JSON同样的事情呢?
有2点不同:
首先,SOAP是用XML标签表达,比较重。JSON比较轻,纯数据。
其次,最重要的是,JSON可直接转换为javascript对象。同样的要转换SOAP XML为javascript对象是较繁琐的任务。
是否所有的技术都支持JSON?
是的,几乎所有的数据交换都支持JSON。
如下所示:
WCF服务:如果你想你的WCF服务应该发送JSON消息,而不是SOAP,可以设置“ResponseFormat”作为你的操作协定“WebMessageFormat.Json”。
[OperationContract] [WebInvoke(Method="GET", UriTemplate="/GetData", RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json)]string GetData();
MVC:如果你希望MVC返回JSON数据;通过调用Json,可返回JSON格式的Customer对象。
public JsonResult CustomerJson() {List<Customer> obj1 = new List<Customer>();Thread.Sleep(5000);Customer obj = new Customer();obj.CustomerCode = "1001";obj1.Add(obj);return Json(obj1,JsonRequestBehavior.AllowGet); }
ASP.NET: 如果你想使用ASP.NET返回JSON,我们需要使用“DataContractJsonSerializer”类。
DataContractJsonSerializer serializer = new DataContractJsonSerializer(myPerson.GetType()); MemoryStream ms = new MemoryStream(); serializer.WriteObject(ms, myPerson);string json = System.Text.Encoding.UTF8.GetString(ms.ToArray()); Response.Clear(); Response.ContentType = "application/json;charset=utf-8"; Response.Write(json); Response.End();
使用jQuery如何进行一个JSON调用?
如在一个MVC中,可通过“getEmployee”函数返回employ的JSON对象。
public JsonResult getEmployee() { Emp obj = new Emp(); obj.empcode = "1001";return Json(obj,JsonRequestBehavior.AllowGet); }
我们用jQuery的getJson函数,来调用上述MVC函数返回的JSON对象即可。
$.getJSON("/Employee/getEmployee", null, getData);function getData(data) { alert(data.empcode); }
jQuery的getJson函数有三个参数:
第一个参数,获取JSON数据的URL地址。
第二个参数,可以将数据传递到URL的MVC操作。目前,我们只是做一个get操作,故第二个参数为NULL。
第三个参数,在JavaScript中,用回调函数对返回的Employee对象进行处理。
因为输出是JSON,它会自动将JSON数据转换为JavaScript对象。你可直接使用“getData”函数显示了“data.empcode”属性,非常便捷。
是否可以将JSON对象Post到服务器?
可以。
可以使用jQuery的“post”方法将数据发送到服务器。
下面是如何post方法调用的例子,同样的,post有3个参数:
第一个参数,接受JSON数据的URL地址
第二个参数,是我们要发送的Json对象
第三个参数,是回调函数,我们收到回应的数据进行处理。
var mydata ={name:"Shiv",city:"Mumbai"}; $.post("/Send/Request", // URLmydata , // Data to be sentfunction(data,status){alert(data + “ “ + status);}); // Call back function
如何把一个完整的HTML表单以JSON格式Post到服务器上?
首先,我们需要调用jQuery的”serialize“,把需要post的表单序列化为JSON对象。
然后,采用上面类似的办法进行post即可。
完整代码如下:
var Mydata = $("#form1").serialize(); $.post("/Customer/getCustomer",JSON. stringify (MyData), DisplayData);
在后台(服务器),可通过inputStream进行捕获JSON数据流。
System.IO.Stream body = Request.InputStream; System.IO.StreamReader reader = new System.IO.StreamReader(body);string s = reader.ReadToEnd() ;
我们怎样才能把JSON字符串转换为C#对象?
要转换一个JSON字符串到C#对象,我们需要使用“JavaScriptSerializer”类,并使用“反序列化”,我们将字符串转换为C#对象。
var jsonser = new JavaScriptSerializer()var obj = jsonser.Deserialize<dynamic>(JsonString);foreach (var x in obj) {String strvalue = x[“value”]; }
程序员Web面试之JSON相关推荐
- 程序员Web面试之前端框架等知识
基于前面2篇博客: 程序员Web面试之jQuery 程序员Web面试之JSON 您已经可以顺利进入Web开发的大门. 但是要动手干,还需要了解一些已有的前端框架.UI套件,即要站在巨人肩膀上而不是从轮 ...
- 前后端解析_好程序员Web前端教程分享前后端分离接口
随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式.在实际工作中,前后端的接口联调对接工作量占Web前端人员日常工作的30%-50%,甚至会更高.接下来的好程 ...
- 以技术面试官的经验分享毕业生和初级程序员通过面试的技巧(Java后端方向)...
本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利. 毕 ...
- js怎么定义combobox_好程序员web前端教程分享新手应该怎么学习webpack
好程序员web前端教程分享新手应该怎么学习webpack,什么是webpack?一句话概括:webpack是一个模块打包工具(module bundler).重点在于两个关键词"模块&quo ...
- 好程序员Web前端分享无法忽视的JavaScript技巧
好程序员Web前端培训分享无法忽视的JavaScript技巧.在大家从事web前端的工作中,很容易忽视一些JavaScript的小技巧,今天为大家总结了一些容易被大家忽略的技巧,希望能够对大家有所帮助 ...
- react组件卸载调用的方法_好程序员web前端培训分享React学习笔记(三)
好程序员web前端培训分享React学习笔记(三),组件的生命周期 React中组件也有生命周期,也就是说也有很多钩子函数供我们使用, 组件的生命周期,我们会分为四个阶段,初始化.运行中.销毁.错误处 ...
- advanced installer更换程序id_好程序员web前端培训分享kbone高级-事件系统
好程序员web前端培训分享kbone高级-事件系统:1.用法,对于多页面的应用,在 Web 端可以直接通过 a 标签或者 location 对象进行跳转,但是在小程序中则行不通:同时 Web 端的页面 ...
- vue如何获取年月日_好程序员web前端教程分享Vue相关面试题
好程序员web前端教程分享Vue相关面试题,Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来好程序 ...
- addeventlistener不支持ajax_好程序员web前端学习路线分享了解AJAX是什么
好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...
最新文章
- vue 点击div 获取位置_Vue中组件之间8种通信方式,值得收藏
- Java基础day4
- python三维数组怎么表示_python – numpy中的三维数组
- 解决:AttributeError: module 'pygal' has no attribute 'Worldmap' 问题
- java继承方法规则或规律
- iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN after 5 attempt
- 免费数据集获取加速器|Graviti Open Datasets
- 某程序员10个月时间做了30个私活单子,纯收入40万?
- 关于python文件打开模式表示错误的是_python文件读取失败了该怎么处理 !
- 中国裁判文书网爬虫分析
- DolphinDB:金融高频因子流批统一计算神器!
- 贴片天线的HFSS和CST仿真对比
- v-for on stateful component root element because it renders multiple elements
- 钜泉光电2018年 IC校招笔试题目
- cocos2d-x公开课视频 (感谢 无脑码农和龙灵修)
- Android实现更换头像功能(适配Android7.0版本)
- 转:C++资源之不完全导引
- 关于程序员找工作的最好渠道,你可能听都没听过!
- 大学计算机课实验,大学计算机课程实验教学平台的设计与实现
- 面对200多人演讲是一种什么体验?
热门文章
- poj 2528 Mayor's posters (线段树+离散化)
- vs设置语言后引用dll的一个错误
- [Flask+Vue]Books全栈应用
- 机器人学习--室内定位的通信学科背景方法
- MFC中动态创建控件以及事件响应实现方法
- ubuntu 环境下调试mysql源码_【转】Ubuntu 16.04下 Mysql 5.7.17源码编译与安装
- mysql入门操作_对MySQL的几个入门操作
- 第四范式恭祝大家新年快乐!
- 来伊份与第四范式宣布战略合作 携手打造智慧零售新范本
- tensorflow随笔-条件循环控制(2)