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);
使用同步是客户端需要等待服务端的响应之后才能处理下一步操作;当服务器处理的
比较慢的时候,浏览器会锁定当前页面,造成“假死”现象。
原文地址:https://www.cnblogs.com/anningkang/p/8579349.html