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 鼠标点击事件及其它捕获
Jun 04 Javascript
CSS+Jquery实现页面圆角框方法大全
Dec 24 Javascript
JQuery从头学起第一讲
Jul 04 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
JS动态给对象添加属性和值的实现方法
Oct 21 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
Oct 27 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
微信小程序系列之自定义顶部导航功能
May 21 Javascript
vue 动态表单开发方法案例详解
Dec 02 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
virtualenv实现多个版本Python共存
2017/08/21 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
大二自我鉴定范文
2013/10/05 职场文书
献爱心活动总结
2014/05/07 职场文书
电工技术比武方案
2014/05/11 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
施工安全标语
2014/06/07 职场文书
社团活动总结模板
2014/06/30 职场文书
离婚协议书范文2015
2015/01/26 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
JS实现九宫格拼图游戏
2022/06/28 Javascript
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技