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实现的完美渐变弹出层效果代码
Apr 02 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
在页面中引入js的两种方法(推荐)
Aug 29 Javascript
javascript数组拍平方法总结
Jan 20 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
Nov 06 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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的闭包(Closure)匿名函数初探
2016/02/14 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
运算符&amp;&amp;的三个不同层次
2013/04/07 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python字符串中匹配数字的正则表达式
2019/07/03 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
德国网上超市:myTime.de
2019/08/26 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
标准导师推荐信(医学类)
2013/10/28 职场文书
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
2014年党支部学习材料
2014/05/19 职场文书
优秀员工评优方案
2014/06/13 职场文书
公司租房协议书
2014/10/14 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
倡议书作文
2015/01/19 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python