js/jquery解析json和数组格式的方法介绍

在解析之前,我们必须弄清楚几个概念:数组,关联数组以及json之间有哪些区别和联系点?
一.概念介绍
1.数组

语法:

ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它。可以把—个用逗号分隔的表达式列表放在方括号中,创建并初始化—个数组。这些表达式的值将成为数组元素。例如:

    var a = [1, true, 'abc'];

具体操作查看API.

ps:必须方括号隔开。
2.关联数组
1.语法:

1.var myhash= {”key1″:”val1″, “key2″:”val2″ };//obj

2.var myhash= {key1:”val1″, key2:”val2″ };//obj-也可以

ps:跟json格式几乎相同,但是json格式要求更加严格(里面的键值对必须使用双引号),但json只能作为一种格式标准,如果要对其进行操作必须转换成关联数组对象(obj)。
2.简单操作

(摘自-http://www.blogjava.net/f6k66ve/archive/2012/12/20/393244.html):

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){...})进行操作

三.具体的实例代码
页面代码:
[html] view plaincopyprint?

    <body>  
        <input type="button" value="send ajax json" οnclick="sendAjaxByjson();"/>  
        <input type="button" value="send ajax array" οnclick="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>  

后台代码:
[java] view plaincopyprint?

    @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();  
              
        }  

[java] view plaincopyprint?

    @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();  
          
    }  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值