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表单验证框架的方法
Sep 14 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 Javascript
node版本管理工具n包使用教程详解
Nov 09 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 Javascript
ES6对象操作实例详解
May 23 Javascript
prettier自动格式化去换行的实现代码
Aug 25 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设计模式 Singleton(单例模式)
2011/06/26 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
webpack入门必知必会
2017/01/16 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
详谈python read readline readlines的区别
2017/09/22 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python binascii 进制转换实例
2019/06/12 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
Python3 读取Word文件方式
2020/02/13 Python
导致python中import错误的原因是什么
2020/07/01 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
主管职责范文
2013/11/09 职场文书
简历自荐信
2013/12/02 职场文书
自荐书范文范例
2014/02/13 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
立春观后感
2015/06/18 职场文书
神秘岛读书笔记
2015/07/01 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android
解决Redis启动警告问题
2022/02/24 Redis