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使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
Jul 26 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
举例简介AngularJS的内部语言环境
Jun 17 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
JS中的BOM应用
Feb 02 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
如何使用less实现随机下雪动画详解
Jan 02 Javascript
CountUp.js数字滚动插件使用方法详解
Oct 17 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
Sep 04 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 dirname()与__FILE__常量的应用
2013/06/24 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
jquery显示和隐藏div特效实例
2013/02/27 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
学习jQuey中的return false
2015/12/18 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
python使用epoll实现服务端的方法
2018/10/16 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
详解Python中的分支和循环结构
2020/02/11 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
英语教育专业自荐信
2014/05/29 职场文书
合作协议书范文
2014/08/20 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
公司股份合作协议书
2014/12/07 职场文书
部队2015年终工作总结
2015/04/02 职场文书
人民检察院起诉书
2015/05/20 职场文书
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技