js/jquery解析json和数组格式的方法详解


Posted in Javascript onJanuary 09, 2014

在解析之前,我们必须弄清楚几个概念:数组,关联数组以及json之间有哪些区别和联系点?

一.概念介绍
1.数组

语法:
ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它。可以把—个用逗号分隔的表达式列表放在方括号中,创建并初始化—个数组。这些表达式的值将成为数组元素。例如:

var a = [1, true, 'abc'];

具体操作查看API.

ps:必须方括号隔开。

2.关联数组

1.语法:
var myhash= {”key1″:”val1″, “key2″:”val2″ };//obj

2.var
myhash= {key1:”val1″, key2:”val2″ };//obj-也可以

ps:跟json格式几乎相同,但是json格式要求更加严格(里面的键值对必须使用双引号),但json只能作为一种格式标准,如果要对其进行操作必须转换成关联数组对象(obj)。

2.简单操作
1.向Hash关联数组添加键值

// 添加一个新键 newkey ,键值为 newval

myhash[”newkey”] = “newval”;

2.删除Hash关联数组已有键值

// 删除一个键 newkey ,同时,该键值对应的 newval 也就消失了
delete myhash[”newkey”];

3.遍历Hash关联数组

// 遍历整个hash 数组
for (key in myhash) {
val = myhash[key];
}

4.获得值

方式1.myhash.key1
方式2.myhash.key2

3.json
格式要求:

{”key1″:”val1″, “key2″:”val2″ };//严格按照此格式,操作可依照关联数组的操作

二.前后台交互中几个关键点
1.当服务器发送的数据不是一条json,而是多条json时,则应当联系数组和关联数组来组装字符串
例如:var objs = [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}];

2.至始至终服务器给客户端的数据都只是字符串,因此为了让其能够在js中对其进行必要的操作,可以通过eval()进行转换成js可执行的对象。
因此jQuey中提供的$.parseJSON()是有局限的,如果是上面1提到的这种情况则就必须使用eval()进行转换,然后再通过$.each(objs,function(i,o){...})进行操作

三.具体的实例代码
页面代码:

<body>
 <input type="button" value="send ajax json" onclick="sendAjaxByjson();"/>
 <input type="button" value="send ajax array" onclick="sendAjaxByarray();"/>
</body>
 <script type="text/javascript">
  function sendAjaxByjson(){
   $.post("json",{},function(data){
    var obj=data;
    alert(typeof obj);//string
    //var a=eval(obj);不解,不注释则会报错..
    var strToobj=$.parseJSON(obj);
    alert(strToobj.name);
    alert(typeof strToobj)//obj
    var obja={'name':'techbirds','age':'23','sex':'male'};
    alert(typeof obja);//obj
    alert(obja['name']+":"+obja.age);
    delete obja['name'];
   });
  }
  function sendAjaxByarray(){
   $.post("array",{},function(data){
    var str=data;
    alert(typeof str);//string
    alert(typeof eval(str));//object
    var obja=[1,2,3,4,5];
    alert(typeof obja);//object   });
  }
 </script>

后台代码:
@Override
 protected void service(HttpServletRequest req, HttpServletResponse reps)
   throws ServletException, IOException {
  Map<String, Object> jsonMap=new HashMap<String, Object>();
  jsonMap.put("name", "techbirds");
  jsonMap.put("age", 23);
  jsonMap.put("sex", "male");
  reps.getWriter().print(JSONObject.fromObject(jsonMap).toString());
  reps.getWriter().flush();
  reps.getWriter().close(); }

 @Override
 protected void service(HttpServletRequest req, HttpServletResponse reps)
   throws ServletException, IOException {
  String array="[1,2,3,4,5,6]";
  reps.getWriter().print(array);
  reps.getWriter().flush();
  reps.getWriter().close(); }
Javascript 相关文章推荐
JavaScript中null与undefined分析
Jul 25 Javascript
javascript 星级评分效果(手写)
Dec 24 Javascript
点击隐藏页面左栏或右栏实现js代码
Apr 01 Javascript
jquery实现兼容IE8的异步上传文件
Jun 15 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
React组件refs的使用详解
Feb 09 Javascript
viewer.js实现图片预览功能
Jun 24 Javascript
JS获取节点的兄弟,父级,子级元素的方法
Jan 09 #Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 #Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 #Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 #Javascript
fmt:formatDate的输出格式详解
Jan 09 #Javascript
js中window.open()的所有参数详细解析
Jan 09 #Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 #Javascript
You might like
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
彻底理解Python list切片原理
2017/10/27 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python构造IP报文实例
2020/05/05 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
社区工作者思想汇报
2014/01/13 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
人事部专员岗位职责
2014/03/04 职场文书
地理科学专业自荐信
2014/09/01 职场文书
花田少年史观后感
2015/06/16 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python