通过Ajax技术,将数组类型数据转换为JSON格式的对象

左手的ㄟ右手 2022-07-17 02:29 338阅读 0赞
  1. 一、在服务器端将list类型数据放入JSON对象中的方法
  2. tjyjList=PxcscjbDAO.getTjyjList(pxcscjbQOMap);
  3. //生成JSON对象,用来容纳获得的样卷数组
  4. JSONObject jsonObject=new JSONObject();
  5. //生成JSON数组对象,存放样卷信息
  6. JSONArray bmhArray=new JSONArray();
  7. for(i=0;i<tjyjList.size();i++){
  8. //把样卷列表中的每条记录赋给Map对象
  9. tjyjMap = (HashMap)tjyjList.get(i);
  10. //通过Map对象获得样卷列表中的各个列值,并添加到JSON数组对象中
  11. JSONArray tempArray=new JSONArray();
  12. tempArray.add(tjyjMap.get("BMH").toString());
  13. tempArray.add(tjyjMap.get("DFDXX").toString());
  14. tempArray.add(tjyjMap.get("PYCJ").toString());
  15. bmhArray.add(tempArray);
  16. }
  17. try {
  18. //将JSON数组对象put到JSONObject对象中,通过ajax传回给客户端的js dedecms.com
  19. jsonObject.put("bmhlist",bmhArray);
  20. } catch (Exception e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. PW.print(jsonObject);//通过PrintWrite,以流方式将JSONObject,返回给客户端。
  25. PW.flush();
  26. PW.close();
  27. 二、在客户端中获得服务器通过ajax返回的JSON对象
  28. new Ajax.Request( 'yjtx.do?method=getTjyjObject',//调用服务器上的相应方法,使用prototype框架中的Ajax对象
  29. {
  30. method: 'post',
  31. postBody: $('fzxx').serialize(),//序列化表单,即为发送表单做准备,该表单将被发送给服务器
  32. onFailure:function(transport){//执行失败时的执行函数
  33. alert(transport.responseText);
  34. },
  35. onSuccess: function(transport) {//如果操作成功,执行function函数
  36. //将得到数据转换为json
  37. var getobj=transport.responseText.evalJSON(true);//从responseText中获得JSON对象
  38. //得到JSON对象中保密号列表 内容来自dedecms
  39. var js_bmh = getobj.bmhlist;
  40. 三、在客户端将需要传送到服务器端的二维数组或列表数据转化为JSON对象,
  41. 再通过Ajax传送到服务器端
  42. 1.首先将数据组成符合JSON键值对格式的数据
  43. {"名称":"值","名称":"值","名称":"值",
  44. "名称":[{"名称":"值","名称":"值","名称":"值"}]//(代表二维数组)
  45. }
  46. 例如:
  47. var bmhlist =
  48. {
  49. "maxnum":30,
  50. "errorcode":1,
  51. "bmha":
  52. [
  53. {"bmh":"0151810151810000085","dfdxx":"1|2|","pycj":3},
  54. {"bmh":"0151810151810000086","dfdxx":"3|4|","pycj":7},
  55. {"bmh":"0151810151810000087","dfdxx":"3|4|","pycj":7},
  56. ]
  57. }
  58. 2.JSON格式的数据转化为JSON对象,并赋给变量
  59. var bmhAsJSON=Object.toJSON(bmhlist);
  60. 3.通过AjaxJSON对象传送给服务器端 织梦好,好织梦
  61. var mailAjax = new Ajax.Request('yjtx.do?method=getJson', //url及需要调用的服务器端的方法
  62. {
  63. method: 'get',
  64. parameters: "bmhlist=" + bmhAsJSON,//将JSON对象作为参数(参数名为bmhlist)传给服务器端的getJson方法
  65. onSuccess: function(transport) {//传送成功后执行的函数
  66. //alert(transport.responseText);
  67. }
  68. });
  69. 四、在服务器端获得客户端传送的JSON对象 织梦好,好织梦
  70. public void getJson(ActionMapping mapping, ActionForm form,
  71. HttpServletRequest request, HttpServletResponse response) {
  72. String json=request.getParameter("bmhlist");//得到reguest中的JSON对象的字符流
  73. JSONObject jsonObject = null;//定义一个JSONObject对象
  74. try {
  75. Object obj=JSONValue.parse(json);//将得到的JSON对象字符流转化为对象
  76. jsonObject=(JSONObject)obj;//将对象强制转化为JSON对象
  77. JSONArray array = (JSONArray) jsonObject.get("bmha");//得到JSON对象中键值为"bmha"的数组转化为JSONArray数组
  78. for(int i=0;i<array.size();i++){
  79. 内容来自dedecms
  80. jsonObject=(JSONObject)array.get(i);//得到JSONArray数组中的每个元素并将其强制转化为JSONObject对象
  81. logger.info("jsonObject.getbmh:"+jsonObject.get("bmh"));//通过JSONObject的get(键值)方法获得每个键值对的值,然后根据需要进行后续处理
  82. logger.info("jsonObject.getdfdxx:"+jsonObject.get("dfdxx"));
  83. logger.info("jsonObject.getpycj:"+jsonObject.get("pycj"));
  84. }
  85. } catch (Exception e) {
  86. // TODO Auto-generated catch block
  87. e.printStackTrace();
  88. } 本文来自织梦
  89. }

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读