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 自定义函数写法分享
Mar 30 Javascript
jqTransform form表单美化插件使用方法
Jul 05 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
Jul 04 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
基于Vue-cli快速搭建项目的完整步骤
Nov 03 Javascript
小程序实现选择题选择效果
Nov 04 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 Javascript
js中Array对象的常用遍历方法详解
Jan 17 Javascript
JS实现点星星消除小游戏
Mar 24 Javascript
JavaScript this关键字的深入详解
Jan 14 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使用异或实现的加密解密实例
2013/09/04 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
培训主管的岗位职责
2013/11/23 职场文书
合作意向协议书范本
2014/03/31 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL