JSONObject与JSONArray以及前后台数据通过json传输

来源:互联网 发布:武汉工商学院淘宝地址 编辑:程序博客网 时间:2024/05/23 12:20

1、简述JSONObject与JSONArray

          JSONObject是对象,基本上是{key:value,key:value......}形式。JSONArray是数组形式。其存取数据也是有区别的,下面会详述。

2、JSONObject与JSONArray的创建

   public class Test {


    public static void main(String[] args) {
        //JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式
        //创建JsonObject第一种方法
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("UserName", "ZHULI");
        jsonObject.put("age", "30");
        jsonObject.put("workIn", "ALI");
        System.out.println("jsonObject1:" + jsonObject);
        
        //创建JsonObject第二种方法
        HashMap<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("UserName", "ZHULI");
        hashMap.put("age", "30");
        hashMap.put("workIn", "ALI");
        System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));
        
        //创建一个JsonArray方法1
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(0, "ZHULI");
        jsonArray.add(1, "30");
        jsonArray.add(2, "ALI");
        System.out.println("jsonArray1:" + jsonArray);
        
        //创建JsonArray方法2
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("ZHULI");
        arrayList.add("30");
        arrayList.add("ALI");
        System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));
        
        //如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中
        System.out.println("jsonArray FROM HASHMAP:" + JSONArray.fromObject(hashMap));
        
        //组装一个复杂的JSONArray
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("UserName", "ZHULI");
        jsonObject2.put("age", "20");
        jsonObject2.put("workIn", "ALI");

        jsonObject2.put("tel", "0000000");

        jsonObject2.accumulate("tel", "1234567");//积累这个value到该key下,如果key存在,则该key的值为数组
        jsonObject2.element("Array", arrayList);//如果值原来存在的话会调用accumulate

        jsonObject2.put("age", 30);//如果该key已经存在则覆盖原来的值
        System.out.println("jsonObject2:" + jsonObject2);
                
    }
}
 
   结果:
 
    jsonObject1:{"UserName":"ZHULI","age":"30","workIn":"ALI"}
    jsonObject2:{"workIn":"ALI","age":"30","UserName":"ZHULI"}
    jsonArray1:["ZHULI","30","ALI"]
    jsonArray2:["ZHULI","30","ALI"]
    jsonArray FROM HASHMAP:[{"workIn":"ALI","age":"30","UserName":"ZHULI"}]
    jsonObject2:{"UserName":"ZHULI","age":"30","workIn":"ALI","tel":["0000000","1234567"],"Array":["ZHULI","30","ALI"]}

3、解析JSON字符串:


    package com.yunos.tv.video.resource.controller.web;

   import net.sf.json.JSONArray;
   import net.sf.json.JSONObject;

    public class Test {


    public static void main(String[] args) {
        String jsonString = "{\"UserName\":\"ZHULI\",\"age\":\"30\",\"workIn\":\"ALI\",\"Array\":[\"ZHULI\",\"30\",\"ALI\"]}";
        //将Json字符串转为java对象
        JSONObject obj = JSONObject.fromObject(jsonString);
        //获取Object中的UserName
        if (obj.has("UserName")) {
            System.out.println("UserName:" + obj.getString("UserName"));
        }
        //获取ArrayObject
        if (obj.has("Array")) {
            JSONArray transitListArray = obj.getJSONArray("Array");
            for (int i = 0; i < transitListArray.size(); i++) {
                System.out.print("Array:" + transitListArray.getString(i) + " ");
            }
        }
    }
}


    返回:

    UserName:ZHULI
    Array:ZHULI Array:30 Array:ALI 

4、前台后台的数据通过json传输

      通常后端java中常见的数据保存格式为:list、map、boolean、数组、json对象、JSONArray等。以list为例,在平时的开发中都会将获取的数据保存在一个集合中如list集合,这时使用 JSONArray 对象的 JSONArray jsonarray = jar.fromObject(list);  fromObject 方法将其从java变成json 数组,这时如果不繁琐 则可以直接将json数组输出,但平时为了在传递的过程中方便我们将json数组转变为string 类型, String strs = jsonarray.toString();  之后在进行传递  , 在前台我们接受的是tostring () 类型的话我们就要使用eval() 函数进行解析,在遍历输出。

(1)前台

             $.ajax({url:"/readapi",
            type: "post",
               data: {scf:scfname},
               dataType: "json",
               success: function(result){
              $("#selectapi").empty();
              var datas= eval(result);               // 格式转化   ,将后台传递的string 转化为json对象
              for(var i=0;i<datas.length;i++)
              {
              $("#selectapi").append("<option>"+datas[i]+"</option>");             
               }
           }});

(2)后台

                List<String> list = new ArrayList();//创建一个list集合
String scfname=beat.getRequest().getParameter("scf");
String col="apiname";
String sql="select apiname from "+scfname;
System.out.print(sql);

jdbcImp jdbc= new jdbcImp();
list=jdbc.select(sql,col);
       System.out.println(list);
       net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(list);

                         return jsonArray;


                        public ArrayList<String> select(String sql,String cols) {
   
                       ArrayList<String>  strArray = new ArrayList<String>();
               try{//监控异常
                       Class.forName("com.mysql.jdbc.Driver");
        
                      //获取连接对象
                     con=DriverManager.getConnection(url);   //获取数据库连接
                     System.out.println("数据库连接成功!");
                     sta=con.createStatement();//创建语句对象
                    //执行SQL语句
                    boolean ret = sta.execute(sql);//"select * from toppromotionscf"
                   if(ret){
                      rs = sta.getResultSet();
                      while(rs.next()){
                 strArray.add(rs.getString(cols));
                      }
                  }
                   sta.close();
                con.close();
   
              }catch(ClassNotFoundException cnfe){cnfe.printStackTrace();}
                catch(SQLException sqle){sqle.printStackTrace();}
       return strArray;
           }

5、java不同数据类型转换为json

   (1). List集合转换成json代码
        List list = new ArrayList();
        list.add( "first" );
        list.add( "second" );
        JSONArray jsonArray2 = JSONArray.fromObject( list );
   (2). Map集合转换成json代码
        Map map = new HashMap();

        map.put("name", "json");
        map.put("bool", Boolean.TRUE);
        map.put("int", new Integer(1));
        map.put("arr", new String[] { "a", "b" });
        map.put("func", "function(i){ return this.arr[i]; }");
        JSONObject json = JSONObject.fromObject(map);
   (3). Bean转换成json代码
         JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
   (4). 数组转换成json代码
         boolean[] boolArray = new boolean[] { true, false, true };
         JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
   (5). 一般数据转换成json代码

          JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

参考文章:http://blog.csdn.net/qq635785620/article/details/10436789

                  http://www.cnblogs.com/snake-hand/p/3167787.html


0 0
原创粉丝点击