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 相关文章推荐
IE关闭时判断及AJAX注销案例学习
Feb 18 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
Nov 21 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
基于Proxy的小程序状态管理实现
Jun 14 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 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函数in_array()使用详解
2014/08/20 PHP
PHP实现文件下载详解
2014/11/27 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
Python如何判断数独是否合法
2016/09/08 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
Python 控制终端输出文字的实例
2019/07/12 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
产品销售员岗位职责
2013/12/18 职场文书
个人简历自我评价
2014/02/02 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
使用Apache Camel表达REST服务的方法
2022/06/10 Servers