json-lib中的JSONObject和JSONArray

  json-lib是用来完成beans,collections,maps,java数组 ,XML与JSON之间互相转换的jar包,json-lib依赖于其它几个jar包(我试过所有的jar包都用最新版本的,结果是会报错的,这说明版本之间还是有配套关系的,合适的才是最好的!),如下图所示,可以到这里下载!

  而在json-lib中JSONObject和JSONArray是用得很频繁的两个类

  JSONObject是无序的键值对的集合,是用“花括号”括起来的一系列键值对;例如:{"id":"1","name":"jack","score":99}

  JSONArray是有序的值的序列,是用“中括号”括起来的一个数组;例如:[{"id":"1","name":"jack","score":99}],或["zhangsan","lisi","wangwu"],又或

[{"id":"1","name":"jack","score":99},{"id":"2","name":"rose","score":88}]

  JSONObject只能表示一个JSON对象,例如:{"id":"1","name":"张三","age":20,"salary":6000};多个JSON对象就要用JSONArray的方式表示(JSONArray中可以有多个JSON对象),例如:[{"id":"1","age":20,"name":"张三","salary":6000},{"id":"2","age":30,"name":"李四","salary":9000},{"id":"3","age":40,"name":"王五","salary":12000}]。一个JSON对象既可以用JSONObject表示,也可以用JSONArray表示;多个JSON对象只能用JSONArray表示,JSONArray中可以装有多个JSON对象。

  例如:如果这么写

就会报这样的错误

,说明多个Json对象就不能用JSONObject表示了。

 

 

 

应该这么写才对

    List<Emp> emps=new ArrayList<Emp>();
            
    Emp e1=new Emp("1","张三",20,6000);
    Emp e2=new Emp("2","李四",30,9000);
    Emp e3=new Emp("3","王五",40,12000);
            
    emps.add(e1);
    emps.add(e2);
    emps.add(e3);
            
    JSONArray jsonArray=JSONArray.fromObject(emps);
    String jsonJAVA=jsonArray.toString();    

  不管后端是用JSONObject还是用JSONArray生成Json,传到前端的AJAX都是Java格式json的字符串,都要用eval函数将其解析为JS格式的Json对象才能在JS中正常的使用。

例如:

 

ajax.onreadystatechange=function(){
        if(ajax.readyState==4){
            if(ajax.status==200){
                var jsonJAVA=ajax.responseText;//得到后端传过来的Java格式的json字符串
                var jsonJS=eval("("+jsonJAVA+")");//转换为JS格式的JSON对象

 

 

 

   

posted @ 2016-02-04 23:01  feixiang92  阅读(456)  评论(0编辑  收藏  举报