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