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 学习笔记(十六) js事件
Feb 01 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
vue单页缓存存在的问题及解决方案(小结)
Sep 25 Javascript
vue日历/日程提醒/html5本地缓存功能
Sep 02 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
mapboxgl实现带箭头轨迹线的代码
Jan 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
python实现端口转发器的方法
2015/03/13 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
python 实现汉诺塔游戏
2020/11/28 Python
网络教育毕业生自我鉴定
2013/10/10 职场文书
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
母婴店促销方案
2014/03/05 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
退伍军人感言
2015/08/01 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
python中filter,map,reduce的作用
2022/06/10 Python
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技