Json技术

JSON语法是一种用于传输和生成数据的协定,很类似于C家族的语言,所以很容易被C家族的语言所解析。
对象:对象包含再{}之间
属性:采用Key-Value对来表示。属性之间使用逗号分开。  string : value 
数组:数组存放再[]之间   [ elements ] 
元素:元素之间用逗号分开
值:值可以是字符串,数字,对象,数组,true,false,null

json的官方文档:http://www.json.org/json-zh.html

 

JSON的优点
轻量级的数据交换格式

人们读写更加容易

易于机器的解析和生成

能够通过JavaScript中eval()函数解析JSON

JSON支持多语言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>ajax处理json数据演示示例</title>
        <script type="text/javascript">
             
                     
            function ask4(){
                //1创建ajax对象
                var xhr=null;
                if(window.XMLHttpRequest){//高版本IE,火狐等
                    xhr = new XMLHttpRequest();
                }else{//低版本IE
                    xhr = new ActiveXObject("Microft.XMLHttp");
                }
                //2请求地址
                var url = "<c:url value='/JsonServlet3'/>"; //post方式,请求参数在 send()方法的实参
                //3设置访问方式
                xhr.open("POST", url, true);
                
                //4设置访问成功返回后的操作
                xhr.onreadystatechange = function(){
                    if(xhr.readyState==4){
                        if(xhr.status==200){
                            var txt = xhr.responseText;
                            //alert(txt);
                            ///////////解析后台返回的json串/////////////
                            //js中的eval()方法的功能: 校验参数文本串符合js中哪一种数据类型,并把其转换成对应类型的对象---json
                            var users = eval( "("+txt+")" ); //得到一个json对象
                            for(var i=0; i<users.length; i++){
                                alert(users[i].id+","+users[i].name+","+users[i].age)
                            }                        
                        }
                    }
                };
                
                xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded" );
                //5发送
                xhr.send(null);
            }
        </script>
    </head>
    <body>
 
        <input type="button" onclick="ask4();" value="ajax请求后台数据(后台--用fastjson工具封装json的方式)">  <br/>
        
    </body>
</html>
package cn.hncu.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import cn.hncu.domain.User;

@WebServlet("/JsonServlet3")
public class JsonServlet3 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //按理应该调用service、dao层并从数据库中把数据读取出来,这里模拟了...
        List<User> users = new ArrayList<User>();
        users.add( new User("U001","Jack",22));
        users.add( new User("U010","张三",12));
        users.add( new User("U002","Rose",23));
        request.setAttribute("users", users);

        //利用fastjson的工具为我们把后台的List<User>类型的数据封装成json格式串,发送前端
        //json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]
        //转List-json※※※
        String json = JSON.toJSONString(users);
        System.out.println(json);
        
        //转Map-json
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("addr", "湖南");
        map.put("id", "P001");
        map.put("sex", "男");
        map.put("age", 20);
        map.put("friend", new User("U001","Jack",22));
        String str = JSON.toJSONString(map);
        System.out.println(str);
        
        //发给前端
        response.setCharacterEncoding("utf-8");
        response.getWriter().print(json);
    }
}
//利用apache的工具为我们把后台的List<User>类型的数据封装成json格式串,发送前端
        //json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]
        //转List-json
        JSONArray jsonObj=JSONArray.fromObject(users);//转换List的方法
        String json = jsonObj.toString();
        System.out.println(json);
        
        //转Map-json
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("addr", "湖南");
        map.put("id", "P001");
        map.put("sex", "男");
        map.put("age", 20);
        map.put("friend", new User("U001","Jack",22));
        JSONObject obj = JSONObject.fromObject(map);
        System.out.println(obj.toString());
        
        //发给前端
        response.setCharacterEncoding("utf-8");
        response.getWriter().print(json);


这里还可以采用apache中工具把数据封装成json字符串,还可以
在后台把我们的List<User>类型的数据手动封装成json格式串,发送前端

//json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]


 这里使用Json工具的时候要导包----->fastjson-1.1.17.jar----->json-lib-2.3-jdk15.jar

posted @ 2017-03-07 20:44  折腾青春  阅读(1629)  评论(0编辑  收藏  举报