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 相关文章推荐
js innerHTML 改变div内容的方法
Aug 03 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
浅谈javascript中this在事件中的应用
Feb 15 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
JavaScript获取当前网页最后修改时间的方法
Apr 03 Javascript
无刷新上传文件并返回自定义值
Jun 11 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
探索Javascript中this的奥秘
Dec 11 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
Angular如何引入第三方库的方法详解
Jul 13 Javascript
node实现分片下载的示例代码
Oct 17 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和ACCESS写聊天室(三)
2006/10/09 PHP
PHP语法速查表
2006/12/06 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
javascript 写类方式之九
2009/07/05 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python下10个简单实例代码
2017/11/15 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
学习python分支结构
2019/05/17 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
国庆节演讲稿范文2014
2014/09/19 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
贷款担保书
2015/01/20 职场文书
检讨书怎么写
2015/05/07 职场文书
教师听课学习心得体会
2016/01/15 职场文书