jialisoftw

          Servlet傳多個JSON變量(Java)

          通過Java servlet處理前臺頁面JS發出的請求,為了和JS兼容通常把Java變量轉化成JSON再傳遞給前臺的JS進行處理。例如在servlet中:
          ArrayList tempList = new ArrayList();
          tempList.add("a");
          tempList.add("b");
          JSONArray jsonArray = JSONArray.fromObject(tempList);
          PrintWriter pw = response.getWriter();
          pw.write( jsonArray.toString() );
          這樣就可以把tempList轉換成json格式發給前臺JS處理。
          如果要同時傳遞多個變量,可以自定義類存放N個屬性,放到ArrayList中轉換成jsonArray再傳過去,也可自己定義數據結構。但是對于邏輯、數據結構均不同的變量,確實要分開傳遞。例如想要再傳遞一個哈希Map:
          Map clusterMap = new HashMap();
          clusterMap.put("cluster", "a");
          JSONObject jsonObject = JSONObject.fromObject(clusterMap);
          注意JSON要求鍵值must be strings,因此所傳的Map的鍵值要為String類型
          再write一下pw.write( jsonArray.toString() );
          實際上如果這樣做的話JS并不能獲取到傳遞的變量,即使再加一層Map設定這些變量的鍵值,JS再通過鍵獲得這些變量也會出問題(不知道簡單的變量有沒問題,沒試過,但我用的時候就只能獲得第一個數據)。
          考慮到json格式的本質是數組,將轉換后的變量再用數組格式進行連接,再傳過去,就OK了。例如:
          String r = "["+jsonArray.toString()+","+jsonObject2.toString()+"]";
          PrintWriter pw2 = response.getWriter();
          pw2.write(r);
          這樣,JS通過獲取第0個數組就可以獲得tempList,第1個數組獲得clusterMap

          posted on 2012-10-18 10:51 飛豬一號 閱讀(2455) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿

          隨筆檔案

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 财经| 永春县| 通州市| 涪陵区| 乌拉特后旗| 化州市| 磴口县| 海门市| 资溪县| 阳山县| 石阡县| 博罗县| 卫辉市| 曲阜市| 连平县| 乐山市| 芦溪县| 襄汾县| 当雄县| 武穴市| 关岭| 贵南县| 原阳县| 正定县| 台山市| 海安县| 平南县| 和林格尔县| 晴隆县| 仙桃市| 阿坝县| 红安县| 旅游| 壶关县| 鄱阳县| 广丰县| 旌德县| 青州市| 荆州市| 西峡县| 鸡西市|