1. 程式人生 > >通過Ajax技術,將陣列型別資料轉換為JSON格式的物件

通過Ajax技術,將陣列型別資料轉換為JSON格式的物件

一、在伺服器端將list型別資料放入JSON物件中的方法 
tjyjList=PxcscjbDAO.getTjyjList(pxcscjbQOMap); 
//生成JSON物件,用來容納獲得的樣卷陣列 
JSONObject jsonObject=new JSONObject(); 
//生成JSON陣列物件,存放樣卷資訊 
JSONArray bmhArray=new JSONArray();
   
   for(i=0;i<tjyjList.size();i++){
    //把樣卷列表中的每條記錄賦給Map物件
    tjyjMap = (HashMap)tjyjList.get(i);
    //通過Map物件獲得樣卷列表中的各個列值,並新增到JSON陣列物件中
    JSONArray tempArray=new JSONArray();
    tempArray.add(tjyjMap.get("BMH").toString());
    tempArray.add(tjyjMap.get("DFDXX").toString());
    tempArray.add(tjyjMap.get("PYCJ").toString());
    bmhArray.add(tempArray);
   }
  try { 
   //將JSON陣列物件put到JSONObject物件中,通過ajax傳回給客戶端的js dedecms.com
     jsonObject.put("bmhlist",bmhArray);    } catch (Exception e) {     // TODO Auto-generated catch block     e.printStackTrace();    }    PW.print(jsonObject);//通過PrintWrite,以流方式將JSONObject,返回給客戶端。     PW.flush();     PW.close();      二、在客戶端中獲得伺服器通過ajax返回的JSON物件  new Ajax.Request( 'yjtx.do?method=getTjyjObject',//呼叫伺服器上的相應方法,使用prototype框架中的Ajax物件     {  method: 'post',  postBody: $('fzxx').serialize(),//序列化表單,即為傳送表單做準備,該表單將被髮送給伺服器  onFailure:function(transport){//執行失敗時的執行函式    alert(transport.responseText);  },  onSuccess: function(transport) {//如果操作成功,執行function函式    //將得到資料轉換為json    var getobj=transport.responseText.evalJSON(true);//從responseText中獲得JSON物件    //得到JSON物件中保密號列表 內容來自dedecms
    var js_bmh = getobj.bmhlist;  三、在客戶端將需要傳送到伺服器端的二維陣列或列表資料轉化為JSON物件,  再通過Ajax傳送到伺服器端  1.首先將資料組成符合JSON鍵值對格式的資料  {"名稱":"值","名稱":"值","名稱":"值",  "名稱":[{"名稱":"值","名稱":"值","名稱":"值"}]//(代表二維陣列)  }  例如:  var bmhlist =  {  "maxnum":30,  "errorcode":1,  "bmha":  [  {"bmh":"0151810151810000085","dfdxx":"1|2|","pycj":3},  {"bmh":"0151810151810000086","dfdxx":"3|4|","pycj":7},  {"bmh":"0151810151810000087","dfdxx":"3|4|","pycj":7},      ]  }  2.將JSON格式的資料轉化為JSON物件,並賦給變數  var bmhAsJSON=Object.toJSON(bmhlist);  3.通過Ajax將JSON物件傳送給伺服器端 織夢好,好織夢
  var mailAjax = new Ajax.Request('yjtx.do?method=getJson', //url及需要呼叫的伺服器端的方法             {                   method: 'get',                   parameters: "bmhlist=" + bmhAsJSON,//將JSON物件作為引數(引數名為bmhlist)傳給伺服器端的getJson方法               onSuccess: function(transport) {//傳送成功後執行的函式                  //alert(transport.responseText);               }               });                  四、在伺服器端獲得客戶端傳送的JSON物件 織夢好,好織夢  public void getJson(ActionMapping mapping, ActionForm form,     HttpServletRequest request, HttpServletResponse response) {    String json=request.getParameter("bmhlist");//得到reguest中的JSON物件的字元流     JSONObject jsonObject = null;//定義一個JSONObject物件               try {                Object obj=JSONValue.parse(json);//將得到的JSON物件字元流轉化為物件                jsonObject=(JSONObject)obj;//將物件強制轉化為JSON物件                JSONArray array = (JSONArray) jsonObject.get("bmha");//得到JSON物件中鍵值為"bmha"的陣列轉化為JSONArray陣列