国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
修正后的生成json字符串的java類 - 夢想博客-相信自己永遠是最棒的

修正后的生成json字符串的java類

記得以前寫過一篇關(guān)于生成json字符串的java類,因為用的比較少,所以也沒有深究,最近學(xué)習(xí)EXT,在它的使用中也著重提到了json,于是決定好好學(xué)習(xí)一下,此外還有另外一個原因,那就是xml解析有時確實有點繁瑣....

以前的java類是參考.net版的json類寫出來的,我返回過json字符串,但一直沒有發(fā)現(xiàn)其中的問題,今天在學(xué)習(xí)時終于發(fā)現(xiàn)原有的類中有一點小小的問題:

下面是修正后的java類:
package com.zb.database.util;

import java.util.ArrayList;

public class Json {

    public static void main(String[] args) {

    }
    
    public String singleInfo="";
    protected boolean _success=true;
    protected String _error="";
    protected ArrayList arrData=new ArrayList();
    protected ArrayList dataItem=new ArrayList();
    public String getError() {
        return _error;
    }
    public void setError(String error) {
        if(!error.equals(""))this._success=false;
        this._error = error;
    }
    public boolean getSuccess() {
        return _success;
    }
    public void setSuccess(boolean success) {
        if(success) this._error="";
        this._success = success;
    }
    
    public Json()
    {
        
    }
    
    public void reSet()
    {
        arrData.clear();
        dataItem.clear();
    }
    
    public void addItem(String name,String _value)
    {
        dataItem.add(name);
        dataItem.add(_value);
    }
    
    //一個數(shù)組添加完畢,一個新的數(shù)組開始
    public void addItemOk()
    {
        arrData.add(dataItem);
        dataItem=new ArrayList();
    }
    
    public String ToString()
    {
        StringBuilder sb=new StringBuilder();
        sb.append("{");
        sb.append("\"datas\":");
        sb.append("[");
        int ad=arrData.size();
        for(int i=0;i<ad;i++)
        {
            ArrayList arr=(ArrayList)(arrData.get(i));
            sb.append("{");
            int t=arr.size();
            for(int j=0;j<t;j+=2)
            {
                if(j==t) break;
                sb.append("\"");
                sb.append(arr.get(j).toString());
                sb.append("\"");
                sb.append(":");
                sb.append("\"");
                sb.append(arr.get(j+1).toString());
                sb.append("\"");
                if(j<t-2) sb.append(",");
            }
            sb.append("}");
            if(i<ad-1) sb.append(",");
        }
        sb.append("]");
        sb.append("}");
        return sb.toString();
    }
    
 }



類中本來有一個:_success、_error的,是一組標(biāo)記,但感覺在實際中沒什么很大的作用,于是在生成字符串時去掉了,在原有的類中,我沒有把所有的鍵名都用雙引號引起來,后來在解析時出了問題,于是都給加上了,此外,原來為了輸出整齊好看,我故意加入了<br>,這算是一個致命錯誤了,在實際中根本不需要用alert輸出整個json字符串對象的值的,而且那只是為了跟蹤輸出的一個特例而已,真是有點畫蛇添足的味道...

下面我們結(jié)合數(shù)據(jù)庫來寫一個輸出json字符串的jsp文件:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="com.zb.database.util.DB,java.sql.*,com.zb.database.util.Json" %>
<%
    response.setContentType("text/html");
    out.clear();
    out.clearBuffer();
    DB db=new DB();
    Connection conn=db.getSQLConnection();
    Statement st=conn.createStatement();
    ResultSet rs=st.executeQuery("select * from product ");
    Json json=new Json();
    json.reSet();
    json.setSuccess(true);
     while(rs.next())
    {
        json.addItem("a",(new Integer(rs.getInt(1))).toString());
        json.addItem("b",rs.getString(2));
        json.addItem("c",rs.getString(3));
        json.addItem("d",(new Integer(rs.getInt(4))).toString());
        json.addItem("e",rs.getDate(5).toString());
        json.addItem("f",rs.getString(6));
        json.addItemOk();
    }
    out.println(json.ToString());
%>



接下來我們用prototype實現(xiàn)ajax來測試結(jié)果:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>prototype測試 ajax測試</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">
  </head>

  <script language="javascript" src="js/prototype.js"></script>
  <script>
  function sendRequest() {   
      var url = "http://localhost:8088/json/testgetjson.jsp";   
     var mailAjax = new Ajax.Request(   
          url,   
          {   
          method: 'get',   
          onComplete: jsonResponse   
          }   
      );   
   }   
  function jsonResponse(originalRequest) {
    var div=document.getElementById("getrequest"); 
    var jsondiv=document.getElementById("jsondiv");
    div.innerHTML= originalRequest.responseText; 
    jsondiv.innerHTML = originalRequest.responseText.evalJSON(true).datas[0].a;
   }  
</script>
  <body>
   <div id="getrequest">
   </div>
   <br><br>
   <div id="jsondiv">Ok
   </div>
   <input type="submit" name="smt" id="smt" value="發(fā)送請求" onclick="sendRequest()">
   <br>
  </body>
</html>

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Asp.net生成tree數(shù)據(jù)格式的json類
集合框架(ArrayList集合的toString()方法源碼解析)
DataTable與Json相互轉(zhuǎn)化,以及DataTable轉(zhuǎn)化Json的三種方式
java連接Neo4j服務(wù)器
Newtonsoft.Json解析json字符串和寫json字符串
玩轉(zhuǎn)動態(tài)編譯:二、實戰(zhàn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服