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 相关文章推荐
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
Aug 07 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
一个基于react的图片裁剪组件示例
Apr 18 Javascript
浅析java线程中断的办法
Jul 29 Javascript
原生小程序封装跑马灯效果
Oct 21 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简单实现断点续传下载的方法
2015/09/25 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python基于select实现的socket服务器
2016/04/13 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
高三英语教学反思
2014/01/13 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
单身证明格式样本
2015/06/15 职场文书
比较node.js和Deno
2021/04/27 Javascript