• json入门实例


    简单JSON实例

    首先我们创建一个叫做User的简单对象。代码如下:

    User.java
    public class User{
    private Integer userId;
    private String userName;
    private String password;

    public Integer getUserId() {
    return userId;
    }
    public void setUserId(Integer userId) {
    this.userId = userId;
    }

    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }

    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    }

    转载请注明出处:[url=http://www.live588.org]淘金盈[/url] [url=http://www.tswa.org]博彩通[/url]  [url=http://www.nsdm.org]澳门博彩[/url]  [url=http://www.lixx.org]博彩网[/url][url=http://www.uvip.org]e世博[/url][url=http://www.10086money.com]时尚资讯[/url][url=http://262002954-qq-com.iteye.com]flex[/url][url=http://flexflex.iteye.com]flex[/url])
    然后我们要位User这个简单对象构建JSON,我们构建的JSON还能统计JSON中User对象个个数,这里我们新建一个TotalJson对象
    TotalJson.java
    import java.util.List;
    public class TotalJson {
    private long results;//数据长度
    private List items;//数据条目

    public long getResults() {
    return results;
    }
    public void setResults(long results) {
    this.results = results;
    }

    public List getItems() {
    return items;
    }
    public void setItems(List items) {
    this.items = items;
    }
    }

    最后我们写一个客户端来测试JSON的使用,代码如下
    Test2.java
    import java.util.ArrayList;
    import java.util.List;
    import net.sf.json.JSONObject;

    public class Test2 {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<User> list = new ArrayList<User>();
    //创建用户1
    User user1 = new User();
    user1.setUserId(1);
    user1.setUserName("zhangsan");
    list.add(user1);
    //创建用户2
    User user2 = new User();
    user2.setUserId(2);
    user2.setUserName("lisi");
    list.add(user2);
    //创建JSON对象
    JSONObject JsonOb=getJsonFromList2(list);
    System.out.println("JsonOb:"+JsonOb);
    /**
    * 输出结果:
    * JsonOb:{
    * "items":[
    * {"password":"","userId":1,"userName":"zhangsan"},
    * {"password":"","userId":2,"userName":"lisi"}],
    * "results":2}
    */
    }

    /**
    * 将List数组转化为JSON数据格式
    * @param beanList 要转化的List数组 
    */
    public static JSONObject getJsonFromList2(List beanList) {
    return getJsonFromList2(beanList.size(), beanList);
    }

    /**
    * 将List数组转化为Json数据格式
    * @param recordTotal List数组长度 
    * @param beanList 要转化的List数组 
    */
    public static JSONObject getJsonFromList2(long recordTotal, List beanList) {
    TotalJson total = new TotalJson();
    total.setResults(recordTotal);
    total.setItems(beanList);
    JSONObject JsonObject = JSONObject.fromObject(total);
    return JsonObject;
    //return JsonObject.toString();
    }
    }

    输出结果:
    JsonOb:{"items":[{"password":"","userId":1,"userName":"zhangsan"},{"password":"","userId":2,"userName":"lisi"}],"results":2}

    从输出结果我们可以看出,这个JSON中有两条记录,两条记录如下表格所示。
    userId userName password
    1 zhangsan 
    2 lisi 值得注意的是我们会发现,JsonOb中,items和results字段是在TotalJson对象中定义的,而Items中的password,userId,userName则是在User这个简单对象中定义的。这个就是通过JSONObject.fromObject(total)这个方法来实现的。其中total是TotalJson对象。

    4.Extjs+JSON实例

    4.1.Extjs前台代码:
    var userStore = new Ext.data.Store( {// 定义数据集对象
    proxy : new Ext.data.HttpProxy( {
    url : 'user.do?method=getUserList×tamp=' + new Date()// 设置代理请求的url
    }),

    // reader : new Ext.data.XmlReader( {// 创建xml数据解析器
    // totalRecords : "results",
    // record : "UserForm",// 对应的Form,下面的字段名与此Form中的相同,数量可以不同
    // id : "userId"
    // }, Ext.data.Record.create( [ {
    // name : 'userId'
    // }, {
    // name : 'userName'
    // }, {
    // name : 'realName'
    // }, {
    // name : 'roleId'
    // }, {
    // name : 'telephone'
    // }, {
    // name : 'email'
    // }, {
    // name : 'address'
    // }, {
    // name : 'remark'
    // } ]))

    reader: new Ext.data.JsonReader({
    totalProperty : 'results',
    root : 'items',
    id: 'userId'
    },
    ['userId','userName','realName','roleId','telephone','email','address','remark'])
    });

    var toolbar = new Ext.Toolbar( [ {// 创建GridPanel的工具栏组件
    text : '新增员工信息',
    iconCls : 'add',
    handler : addUser
    }, {
    text : '删除员工信息',
    iconCls : 'remove',
    handler : deleteUser
    }, {
    text : '修改员工信息',
    iconCls : 'plugin',
    handler : updateUser

    }
    , '-','查询:',' ', new Ext.ux.form.SearchField( {
    store : userStore,
    width : 110
    })

    ]);

    var sm = new Ext.grid.CheckboxSelectionModel();// 创建复选择模式对象
    var cm = new Ext.grid.ColumnModel( [// 创建表格列模型
    new Ext.grid.RowNumberer(), sm, {
    header : "编号",
    width : 30,
    dataIndex : 'userId',
    hidden : true,
    sortable : true
    }, {
    header : "用户名",
    width : 60,
    dataIndex : 'userName',
    sortable : true
    }, {
    header : "真实姓名",
    width : 60,
    dataIndex : 'realName',
    sortable : true
    }, {
    header : "用户角色",
    width : 60,
    dataIndex : 'roleId',
    sortable : true
    }, {
    header : "联系电话",
    width : 60,
    dataIndex : 'telephone',
    sortable : true
    }, {
    header : "电子邮箱",
    width : 80,
    dataIndex : 'email',
    sortable : true
    }, {
    header : "住址",
    width : 80,
    dataIndex : 'address',
    sortable : true
    }, {
    header : "备注",
    width : 60,
    dataIndex : 'remark'
    } ]);

    var userGrid = new Ext.grid.GridPanel( {// 创建Grid表格组件
    applyTo : 'user-grid-div',// 设置表格现实位置
    frame : true,// 渲染表格面板
    tbar : toolbar,// 设置顶端工具栏
    stripeRows : true,// 显示斑马线
    autoScroll : true,// 当数据查过表格宽度时,显示滚动条
    store : userStore,// 设置表格对应的数据集
    viewConfig : {// 自动充满表格
    autoFill : true
    },
    sm : sm,// 设置表格复选框
    cm : cm,// 设置表格的列
    bbar : new Ext.PagingToolbar( {
    pageSize : 25,
    store : userStore,
    displayInfo : true,
    displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录',
    emptyMsg : '没有记录'
    // ,items:['-',new Ext.app.SearchField({store:userStore})]
    })
    });
    userStore.load( {// 加载数据集
    params : {
    start : 0,
    limit : 25
    }
    });

    4.2.Java后台代码(解决json 中文乱码):
    JSONObject JsonOb=ExtHelper.getJsonFromList2(list);//将list装换成JSONObject
    System.out.println("JsonOb:"+JsonOb);//后台输出
    // response.setContentType("text/xml;charset=UTF-8");
    response.setContentType("text/json;charset=UTF-8");//解决前台显示中文乱码问题
    response.getWriter().write(JsonOb.toString());

    JSON实例应用
    文章分类:Web前端

    JSON实际就是一种数据格式,传递数据,特别的地方在于:JSON的数据格式可以直接构成JavaScript中的一个对象,因些可以在JavaScript很易容访问到它的数据。(个人的见解,关于JSON的其它资料可以去google一下)

    下面就应用一下JSON:

    使用JSON需要一些文件:将js对象转化成JSON的数据格式的JS如:json.js

    将Java对象转化成JSON的数据格式的jar包:json-lib-2.3-jdk15.jar等可以在下面的附件中获得

    我在我的工程中引入了这个文件(也可以不用这个文件,那么你需要自己在js或class中拼成JSON格式的数据)

    Html代码 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
    <head> 

    <title>JSON学习</title> 
    <meta http-equiv="pragma" content="no-cache"> 
    <meta http-equiv="cache-control" content="no-cache"> 
    <meta http-equiv="expires" content="0"> 
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
    <meta http-equiv="description" content="This is my page"> 
    <script type="text/javascript" src="js/json.js"></script> 
    </head> 

    <script language="javascript"> 
    var xmlHttp; 
    function createXMLHttpRequest() { 
    if (window.ActiveXObject) { 
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 

    else if (window.XMLHttpRequest) { 
    xmlHttp = new XMLHttpRequest(); 


    function doJSON(){ 
    var car = getCarObject(); 
    //将JS对象转化成JSON格式的Text 
    var carAsJSON = JSON.stringify(car); 
    alert(carAsJSON); 
    var url = "JsonTest1?timeStamp="+new Date().getTime(); 
    createXMLHttpRequest(); 
    xmlHttp.open("POST", url, true); 
    xmlHttp.onreadystatechange = handleStateChange; 
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlHttp.send(carAsJSON); 

    //Ajax的回调方法 
    function handleStateChange(){ 
    if(xmlHttp.readyState == 4){ 
    if(xmlHttp.status == 200){ 
    parseResults(); 



    //具体的回调作动 
    function parseResults(){ 
    var responseDiv = document.getElementById("serverResponse"); 
    if(responseDiv.hasChildNodes()){ 
    responseDiv.removeChild(responseDiv.childNodes[0]); 

    //xmlHttp.responseText是servlet中返回回来的JSON格式的数据,将它创建成一个js的node对象放到DIV中 
    var responseText = document.createTextNode(xmlHttp.responseText); 
    responseDiv.appendChild(responseText); 
    //将json格式的Text转化成JSON对象:用eval('('+response+')') 
    var resultJson = eval('('+xmlHttp.responseText+')'); 
    alert(resultJson); 
    alert(resultJson.make); 
    alert(resultJson.model); 
    alert(resultJson.year); 
    alert(resultJson.color); 

    //JS中的一个对象 
    function Car(make,model,year,color){ 
    this.make = make; 
    this.model = model; 
    this.year = year; 
    this.color = color; 

    //构成对象并返回 
    function getCarObject(){ 
    return new Car("Dodge", "Coronet R/T", 1968, "yellow"); 

    </script> 

    <body> 
    <form action="#"> 
    <input type="button" value="Click here to send JSON data to the server" onclick="doJSON();"/> 
    </form> 
    <h2>Server Response:</h2> 
    <div id="serverResponse"> 

    </div> 
    </body> 
    </html>

    在我的servlet中实现如下:

    Java代码 
    public class JsonTest1 extends HttpServlet { 

    /** 

    */ 
    private static final long serialVersionUID = 306348969081510518L; 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    this.doPost(request, response); 


    public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    String json = readJSONStringFromRequestBody(request); 
    System.out.println("json = " + json); 
    //将request中接收的字符串转化成json对java对象 
    JSONObject jsonObject = JSONObject.fromObject(json); 
    System.out.println("jsonObject = " + jsonObject.toString()); 
    System.out.println(jsonObject.getInt("year")); 
    System.out.println(jsonObject.getString("make")); 
    System.out.println(jsonObject.getString("model")); 
    System.out.println(jsonObject.getString("color")); 
    //设置返回的格式是text 
    response.setContentType("text/plain"); 
    response.getWriter().print(jsonObject); 


    private String readJSONStringFromRequestBody(HttpServletRequest request) { 
    StringBuffer json = new StringBuffer(); 
    String line = null; 
    try { 
    BufferedReader bufferRead = request.getReader(); 
    while ((line = bufferRead.readLine()) != null) { 
    System.out.println("line = " + line); 
    json.append(line); 

    } catch (Exception e) { 
    e.printStackTrace(); 

    return json.toString(); 

    }

  • 相关阅读:
    Spark的精简安装步骤---陈楠心血总结
    关于Hadoop的集群环境下虚拟机采用NAT方式连不上网的解决
    size_t总结
    POJ 1852 Ants
    Digital Roots 1013
    1350. Primary Arithmetic
    Word Reversal
    POJ 2876 Cantoring Along
    逆序数的求法
    C++ 中cin
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2435509.html
Copyright © 2020-2023  润新知