zoukankan      html  css  js  c++  java
  • json语法和使用

    一.JSON 概述: 
    JavaScript Object Natation,是一种轻量级的数据交换技术规范。
    二.使用流程:
    在服务端将java对象转换为JSON,然后发送到浏览器,在浏览器上在讲JSON对象转换
    为js对象。
    三.JSON语法
    1.表示一个对象:
        {属性名1:属性值1,属性名2:属性值2,属性名3:属性值3}
        JavaScript中创建对象的三种方式:
        1.使用json语法来创建
        var obj = {"name":an,"age":18};
        2.使用Object来创建
        var obj = new Object();
        obj.name="zs";  obj.age=22;
        3.使用javaScript函数来创建(对象模板);
        function Person(name,age){
            this.name = name;
            this.age = age;
        }
        var person1 = new Person("zs",22)
    2.表示一个对象组成的数组:
        var arr = [{"name","chang","age",22},{"name":"bo","age":23}];
    四.JSON的使用:
        1.java对象转换为JSON格式的字符串(就是普通字符串使用了JSON的语法规则),
        使用了JSONObject.fromObject();
        public static void test1(){
            //普通java对象
            Stock s = new Stock();
            s.setName("an");
            s.setCode("10086");
            s.setPrice(12.8);
            //转换为JSON对象
            JSONObject obj = JSONObject(s);
            //转换为字符串
            String jsonStr = obj.toString();
            System.out.println(jsonStr);
        }
        2.java对象组成的集合转换为一个JSON字符串,
        使用了JSONArray.fromObject();
        public static void test2(){
            //生成一个java对象的集合
            List<Stock> stock = new ArrayList<Stock>();
            Random r = new Random();
            DecimalFormat df = new DecimalFormat("#.##");  //小数格式
            for(int i=0;i<3;i++){
                Stock s = new Stock();
                s.setName("zhang"+r.nextInt(10));
                s.setCode("60001"+r.nextInt(10));
                Double price = r.nextInt(100)+r.nextDouble();
                s.setPrice(Double.parseDouble(df.format));
                stock.add(s);
            }
            //将这个对象的集合转换成一个json的字符串
            JSONArray array =JSONArray.fromObject(stock);
            String jsonStr = array.toString();
            System.out.println(jsonStr);
        };
        3.java对象组成的数组装换为一个JSON字符串
        public static void test3(){
            //生成一个java对象的数组
            Stock[] stock = new Stock[3];
            Random r = new Random();
            DecimalFormat df = new DecimalFormat("#.##");
            for(int i=0;i<3;i++){
                Stock s = new Stock();
                s.setName("cheng"+r.nextInt(10));
                s.setCode("11111"+r.nextInt(10));
                Double d = r.nextInt(100)+r.nextDouble();
                s.setPrice(Double.parseDouble(df.format(d)));
                stock[i] = s;
            }
            //讲这个java对象的数组转换为一个JSON字符串
            JSONArray array = JSONArray.fromObject(stock);
            String jsonstr = array.toString();
            System.out.println(jsonstr);
        }
        4.JSON字符串转换为javaScript对象
        JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
        eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成
        JavaScript 对象。
        必须把文本包围在括号中,这样才能避免语法错误:
        var obj = eval ("(" + jsontxt + ")");
        
        JQuery框架中ajax解析json字符串的示例。
        $.ajax({
          type: 'POST',
          url: '../../caseHandler.ashx?action=GetCase&id=' + id.toString(), //url action是方法的名称
          data: "",
          dataType: "text", //可以是text,如果用text,返回的结果为字符串;如果需要json格式的,可以设置为json
          ContentType: "application/json; charset=utf-8",
          success: function (returnedData) {
            getMarkerFeature(eval("(" + returnedData+ ")"));
          },
          error: function (msg) {
            alert("访问失败:"+ msg);
          }
        });
    五.同步请求:
    在ajax发送请求的时候设置。
    xhr.open(请求方式,请求地址,false);
    使用同步是客户端需要等待服务端的响应之后才能处理下一步操作;当服务器处理的
    比较慢的时候,浏览器会锁定当前页面,造成“假死”现象。
  • 相关阅读:
    报错解决——ctypes.ArgumentError: argument 1:……….. : wrong type
    报错解决——OSError: libdarknet.so: cannot open shared object file: No such file or directory
    报错解决——make: *** No targets specified and no makefile found. Stop
    dos2unix命令
    报错解决——linux下执行sh出现异常"syntax error: unexpected end of file"
    Python中使用SMTP发送邮件以及POP收取邮件
    常用的邮箱服务器(SMTP、POP3)地址、端口
    Python日期与字符串互转
    Mac OSX上卸载Anaconda
    uWSGI+APScheduler不能执行定时任务
  • 原文地址:https://www.cnblogs.com/anningkang/p/8579349.html
Copyright © 2011-2022 走看看