SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的


Posted in Javascript onDecember 10, 2015

json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位。Json的语法非常简单,采用的是键值对表示形式。JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释。这个字符串是符合json语法的,而json语法又是 javascript语法的子集,所以javascript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。下面我们通过实例来看看JQuery传递/解析json格式的数据是如何实现的。

1.首先来看前端jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
  pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="/springMVC6/js/jquery-1.7.2.js"></script> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
<script type="text/javascript"> 
  $(document).ready(function(){ 
    //传递字符串格式json对象到后台(一个json对象) 
    $("#resolveJsonObject").click(function(){ 
      var userName =encodeURI($("#userName").attr("value")); 
      var age = encodeURI($("#age").attr("value")); 
      var user = {userName:userName,age:age}; 
      var aMenu = encodeURI(JSON.stringify(user)); 
      $.ajax({ 
         url:"/springMVC6/user/data/resolveJsonObject" , 
         data:"orderJson=" + aMenu,  
         success:function(data){ 
        } 
      }); 
    }); 
    //传递json数组到后台 
    $("#resolveJsonArray").click(function(){ 
      var userName =encodeURI($("#userName").attr("value")); 
      var age = encodeURI($("#age").attr("value")); 
      //数组开始 
      var user1 = {userName:userName,age:age}; 
      var allMenu={ 
        "menu":[ ] 
        }; 
      allMenu.menu.push(user1); 
      var allMenu1 = encodeURI(JSON.stringify(allMenu)); 
      $.ajax({ 
        //json数组 
         url:"/springMVC6/user/data/resolveJsonArray" , 
        data:"orderJson=" + allMenu1, 
        success:function(data){ 
        } 
      }); 
    }); 
    //接收后台的json在前台解析 
    $("#resolveJson").click(function(){ 
      $.ajax({ 
        //解析从后台返回的json数据 
        url:"/springMVC6/user/data/resolveJson" , 
        type:"post",     
        success:function(data){ 
          var arr=eval(data); 
          alert(arr.length); 
          for(var m = 0;m<arr.length;m++){ 
            alert(arr[m].user.userName); 
          } 
        } 
      }); 
    }); 
  }); 
</script> 
</head> 
<body> 
  <h1>json添加用户</h1> 
  姓名:<input id="userName" type="text" name="userName"> 
  年龄:<input id="age" type="text" name="age"><br> 
  <input type="button" id="resolveJsonObject" value="json对象"> 
  <input type="button" id="resolveJsonArray" value="json数组"> 
  <input type="button" id="resolveJson" value="前端解析json字符串"> 
</body> 
</html>

2.使用javabean解析前端数据:

package com.tgb.web.controller.annotation; 
import java.io.IOException; 
import java.net.URLDecoder; 
import java.util.ArrayList; 
import java.util.List; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import com.tgb.web.controller.entity.User; 
@Controller 
@RequestMapping("/user/data") 
public class DataController { 
  //接收前台传过来的字符串格式的json对象,在后台进行解析 
  @RequestMapping("/resolveJsonObject"  ) 
  public void resolveJsonObject(HttpServletRequest request,HttpServletResponse response) throws IOException { 
    //解码 
    String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8"); 
    JSONObject jb=new JSONObject(); 
    //将json格式的字符串转换为json对象,并取得该对象的“userName”属性值 
    String o=(String)jb.fromObject(str).get("userName"); 
    System.out.println(o); 
  } 
   //传递json数组字符串 
  @RequestMapping("/resolveJsonArray" ) 
  public void resolveJsonArray(HttpServletRequest request,HttpServletResponse response) throws IOException { 
    //解码,为了解决中文乱码 
    String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8"); 
    JSONObject jb=new JSONObject(); 
    //将json格式的字符串转换为json数组对象 
    JSONArray array=(JSONArray)jb.fromObject(str).get("menu"); 
    //取得json数组中的第一个对象 
    JSONObject o = (JSONObject) array.get(0);//获得第一个array结果 
    //取出json数组中第一个对象的“userName”属性值 
    String name=o.get("userName").toString();//获得属性值 
    System.out.println(name); 
  } 
  //通过该函数返回json格式的数据,在前台通过JQuery进行解析 
  @RequestMapping("/resolveJson" ) 
  public void resolveJson(HttpServletRequest request,HttpServletResponse response) throws IOException { 
    List m = (List) new ArrayList(); 
    JSONArray jsons = new JSONArray(); 
    for(int i=0;i<10;i++){ 
      User user = new User(); 
      user.setUserName("name_" + i); 
      m.add(user); 
    } 
    for(int j=0;j<m.size();j++){ 
      JSONObject jsonObject = new JSONObject(); 
      jsonObject.put("user", m.get(j)); 
      jsons.add(jsonObject); 
    } 
    response.getWriter().print(jsons.toString()) ; 
  } 
  @RequestMapping("/toJson"  ) 
  public String toJson() { 
    return "/json"; 
  } 
}

json的作用并不仅仅 在于作为字符串在前后台进行传递,我们采用json传递数据的时候更主要的考虑到的是它的传输效率。当两个系统需要进行数据交换的时候,如果传递的是经过 序列化的对象,效率是非常低的,如果传递的是存储大量对象的数组的时候效率就更不敢想象了,这时如果通过将对象或数据转换成json字符串进行传递,效率 就会提高很多。本文仅针对单系统中前后台数据传输与解析进行讲解,异构系统之间的json传输不在本文讨论范围内。

以上所述是SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的相关资料,希望大家喜欢。

Javascript 相关文章推荐
HTML node相关的一些资料整理
Jan 01 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
Sep 21 Javascript
jQuery实现html可联动的百分比进度条
Mar 26 jQuery
vue实现短信验证码输入框
Apr 17 Javascript
JS中多层次排序算法的实现代码
Jan 06 Javascript
vue基于Teleport实现Modal组件
May 31 Vue.js
jQuery自定义动画函数实例详解(附demo源码)
Dec 10 #Javascript
javascript图片预加载完整实例
Dec 10 #Javascript
JavaScript动态插入CSS的方法
Dec 10 #Javascript
jQuery实现监控页面所有ajax请求的方法
Dec 10 #Javascript
js表单提交和submit提交的区别实例分析
Dec 10 #Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 #Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 #Javascript
You might like
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
puppeteer库入门初探
2019/01/09 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
VSCode下好用的Python插件及配置
2018/04/06 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
生物制药自我鉴定
2014/01/25 职场文书
七年级历史教学反思
2014/02/05 职场文书
共产党员承诺书
2014/03/25 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
针对吵架老公保证书
2015/05/08 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫