如何在.NET MVC中使用jQuery并分析腾讯返回码使用JSON数据

SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
字体:[ ] 类型:转载 时间:
json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位。Json的语法非常简单,采用的是键值对表示形式,本文给大家介绍SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的,对spring mvc ajax json相关知识感兴趣的朋友一起学习吧
json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位。Json的语法非常简单,采用的是键值对表示形式。JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释。这个字符串是符合json语法的,而json语法又是 javascript语法的子集,所以javascript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。下面我们通过实例来看看JQuery传递/解析json格式的数据是如何实现的。
1.首先来看前端jsp代码:
&%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&script type="text/javascript" src="/springMVC6/js/jquery-1.7.2.js"&&/script&
&meta http-equiv="Content-Type" content="text/ 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));
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));
//json数组
url:"/springMVC6/user/data/resolveJsonArray" ,
data:"orderJson=" + allMenu1,
success:function(data){
//接收后台的json在前台解析
$("#resolveJson").click(function(){
//解析从后台返回的json数据
url:"/springMVC6/user/data/resolveJson" ,
type:"post",
success:function(data){
var arr=eval(data);
alert(arr.length);
for(var m = 0;m&arr.m++){
alert(arr[m].user.userName);
&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字符串"&
2.使用javabean解析前端数据:
package com.tgb.web.controller.
import java.io.IOE
import java.net.URLD
import java.util.ArrayL
import java.util.L
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import net.sf.json.JSONA
import net.sf.json.JSONO
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import com.tgb.web.controller.entity.U
@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格式的数据是如何实现的相关资料,希望大家喜欢。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具17741人阅读
C# 开发资料料(63)
C# Asp.Net MVC(21)
.NET MVC3 几种返回 JSON 对象的方式和注意事项
&在用 .NET MVC3 给我们做 WEB 项目带来很大灵活性同时,
对刚上手的同学来说有些细微的设置导致的问题让我们
相当的“纠结”!
这里要讨论的就是:使用JQuery的 Ajax 请求后“返回”的
JSON 数据问题。
&相信大多数同学都会遇到过,就是在后台已经拼接好了一
(拼接方法比较多,我的博客也有提到过!)
串标准的JSON字符串,但是 Ajax 的 success 方法就是
无法正常解析 JSON 对象(相当郁闷啊!如果不是前端
高手非得调疯了!)。
下面将解几种返回 JSON 的方法和注意事项!
注:我们默认前端使用的是 JQuery的 Ajax 请求.格式如下
当然我要返回的JSON 是下面形式的
<span style="font-family:SimS font-size:16 color:#.前台脚本
&& Data:true,
&&Msg:&成功&,
&&Result:true
//JQuery的 Ajax 请求
& $.ajax({
&&& type: &Post&,
&&& url: &AddUser.aspx&,
&&& data: &&,
&&& dataType: &json&, //如果要返回 json 这里很重要哦!!详细说明参见JQuery的API手册吧
&&& success: function (result) {
&&& alert(result.Result);
&&&&& if (result.Result) {
&&&&&&& alert('成功');
&&&&& else {
&&&&&&& alert(&失败&);
&&& complete: function (XMLHttpRequest, textStatus) {
&&&&& //alert(&complete&);
&&& error: function (XMLHttpRequest, textStatus, errorThrown) {
&&&&& alert(&error&);
&&&&& // alert(XMLHttpRequest);
&&&&& // alert(errorThrown);
&&&&& // alert(textStatus);
<span style="font-family:SimS font-size:16 color:#.后台代码
返回的都是 ResultInfo 对象,对象声明如下
& /// &summary&
& /// 调用结果信息类
& /// &/summary&
& /// &typeparam name=&T&&泛型类型&/typeparam&
& public class ResultInfo&T& where T:new ()
&&& /// &summary&
&&& /// 调用结果是否成功
&&& /// &/summary&
&&& public bool Result { }
&&& /// &summary&
&&& /// 调用结果返回的数据
&&& /// &/summary&
&&& public T Data { }
&&& /// &summary&
&&& /// 调用结果返回的相关提示信息
&&& /// &/summary&
&&& public string Msg { }
&ToJsonStr() 方法,是我自己封装的一个将对象转换为 Json
字符串的一个扩展方法。
<span style="font-family:SimS font-size:16 color:#.1 请求的返回&#20540;为 JsonResult 对象
&&& public JsonResult AddUser()
&&&&& bool flag =
&&&&& ResultInfo&bool& result = new ResultInfo&bool&()
&&&&&&& Result = flag,
&&&&&&& Msg = flag ? &成功& : &失败&,
&&&&&&& Data = flag
&&&&& JsonResult js = new JsonResult();
&&&&& js.Data =
&JsonResult 对象比较方便了用着,你只需要将对象赋&#20540;
给它的实例化对象的 Data 属性,之后直接返回它就OK了,其他
的如何将对象转为 Json 字符串你都不用考录了!
&但要注意的是:如果你画蛇添足,把对象转为 Json 字符串,然后
再赋&#20540;给 Data 属性,客户端是得不到 Json 对象的!
<span style="font-family:SimS font-size:16 color:#.2 请求的返回&#20540;为 ActionResult 对象
&&& public ActionResult AddUser()
&&&&& bool flag =
&&&&& ResultInfo&bool& result = new ResultInfo&bool&()
&&&&&&& Result = flag,
&&&&&&& Msg = flag ? &成功& : &失败&,
&&&&&&& Data = flag
&&&&& string json = result.ToJsonStr();
&&&&& return Content(json);
&&&&& //return Content(json,&text/json&); //这种写法也可以,第二个参数就是:MIME类型
&当然你也可以使用 2.1 中的方式,返回 JsonResult 对象,咱们现在
要用另外一种方式返回JSON。
&用这种方式脚本那边儿需要提供支持!就是要保证 JQuery的 Ajax 请求
的 dataType 属性&#20540;必须设为 &json&,即:dataType: &json&。
& 没有这个支持你得到的将会是一个字符串!
<span style="font-family:SimS font-size:16 color:#.3 请求的返回&#20540;为 string 对象
&&& public string AddUser()
&&&&& bool flag =
&&&&& ResultInfo&bool& result = new ResultInfo&bool&()
&&&&&&& Result = flag,
&&&&&&& Msg = flag ? &成功& : &失败&,
&&&&&&& Data = flag
&&&&& string json = result.ToJsonStr();
&用这种方式脚本那边儿需要提供支持!就是要保证 JQuery的 Ajax 请求
的 dataType 属性&#20540;必须设为 &json&,即:dataType: &json&。
& 没有这个支持你得到的将会是一个字符串!
<span style="font-family:SimS font-size:16 color:#.4 设置 Response.ContentType 属性
&& public string AddUser()
&&&&& bool flag =
&&&&& ResultInfo&bool& result = new ResultInfo&bool&()
&&&&&&& Result = flag,
&&&&&&& Msg = flag ? &成功& : &失败&,
&&&&&&& Data = flag
&&&&& Response.ContentType = &application/ charset=utf-8&;
&&&&& string json = result.ToJsonStr();
&如果在后台代码设置了,响应对象(response)的
Content-Type 等于 application/ charset=utf-8 时,
JQuery的 Ajax 请求可以不用有 dataType 属性。
& 其实讨论了这么多就是解决 2.4 中要解决的问题,客户端如何
解析你返回的字符,就是通过 Content-Type 属性决定。
&这么多种方法为的是给让大家用着方便,少走弯路!(我是走了弯路
了,很不爽!)
& 我喜欢用 2.4 的方法,个人喜好而已!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:668497次
积分:8399
积分:8399
排名:第2499名
原创:222篇
转载:26篇
评论:91条
(11)(1)(12)(14)(12)(6)(2)(4)(4)(7)(1)(3)(3)(1)(1)(2)(11)(3)(5)(2)(1)(1)(2)(7)(6)(1)(1)(1)(6)(4)(1)(2)(3)(1)(2)(4)(1)(4)(3)(6)(3)(6)(6)(4)(10)(3)(2)(3)(3)(4)(2)(1)(2)(4)(1)(2)(2)(1)(2)(3)(5)(1)(15)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'本帖子已过去太久远了,不再提供回复功能。JSON的实现,即将需要的数据回传到jsp页面;&1&.加入实现Json的三个架包到lib中;2&.目标方法上边加入注解,需要返回的值3&.在jsp页面中书写jQuery方法;
eclipse中javaEE环境下的web.xml文件配置为:
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="/xml/ns/javaee"
xsi:schemaLocation="/xml/ns/javaee
http:///xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"&
&!-- 配置SpringMVC的DispatcherServlet --&
&servlet-name&springDispatcherServlet&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:springmvc.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springDispatcherServlet&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 --&
&filter-name&HiddenHttpMethodFilter&/filter-name&
&filter-class&org.springframework.web.filter.HiddenHttpMethodFilter&/filter-class&
&filter-mapping&
&filter-name&HiddenHttpMethodFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&/web-app&
spring的bean的配置文件为:springmvc.xml
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"&
&!-- 配置自动扫描的包 --&
&context:component-scan base-package="com.atguigu.springmvc"&&/context:component-scan&
&!-- 配置视图解析器 --&
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="prefix" value="/WEB-INF/views/"&&/property&
&property name="suffix" value=".jsp"&&/property&
default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,
它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的
Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理
一般 WEB 应用服务器默认的 Servlet 的名称都是 default.
若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定
&mvc:default-servlet-handler/&
&!-- 一般都会配置这个 &mvc:annotation-driven &&/mvc:annotation-driven&,
由于。。。requestmapping请求实现不了,使用这个,会使requestmapping请求一定实现
&mvc:annotation-driven&&/mvc:annotation-driven&
EmployeeDao类:
package com.atguigu.springmvc.crud.
import java.util.C
import java.util.HashM
import java.util.M
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.R
import com.atguigu.springmvc.crud.entities.D
import com.atguigu.springmvc.crud.entities.E
@Repository//标识持久层组件
public class EmployeeDao {
private static Map&Integer, Employee& employees=null;
@Autowired
private DepartmentDao departmentD
employees=new HashMap&Integer, Employee&();
employees.put(1001, new Employee(1001, "E-AA", "", 1, new Department(101, "D-AA")));
employees.put(1002, new Employee(1002, "E-BB", "", 1, new Department(102, "D-BB")));
employees.put(1003, new Employee(1003, "E-CC", "", 0, new Department(103, "D-CC")));
employees.put(1004, new Employee(1004, "E-DD", "", 0, new Department(104, "D-DD")));
employees.put(1005, new Employee(1005, "E-EE", "", 1, new Department(105, "D-EE")));
private static Integer initId=1006;
//添加数据的方法
public void save(Employee employee){
if(employee.getId()==null){
employee.setId(initId++);
employee.setDepartment(departmentDao.getDepartment(employee.getDepartment().getId()));
employees.put(employee.getId(), employee);
//获取全部的数据的方法
public Collection&Employee& getAll(){
return employees.values();
//获取集合中的一个数据
public Employee getEmployee(Integer id){
return employees.get(id);
//删除集合中的一个数据
public void delect(Integer id){
employees.remove(id);
实现的handler 类方法:SpringMVCTest:
@Controller
public class SpringMVCTest {
@Autowired
private EmployeeDao employeeD/*
* JSON的实现,即将需要的数据回传到jsp页面;
* 1&.加入实现Json的三个架包到lib中;
* 2&.目标方法上边加入注解,需要返回的值
* 3&.在jsp页面中书写jQuery方法;
@ResponseBody
@RequestMapping("/testJson")
public Collection&Employee& testJson(){
return employeeDao.getAll();
jsp页面:index.jsp;需要导入jQuery架包,并且用jQuery方法,实现数据回显到jsp页面;点击
&%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
&title&Insert title here&/title&
&script type="text/javascript" src="scripts/jquery-1.9.1.min.js"&&/script&
&script type="text/javascript"&
$(function(){
$("#testJson").click(function(){
var url=this.
var args={};
$.post(url,args,function(data){
for(var i=0;i&data.i++){
var id=data[i].
var lastName=data[i].lastN
alert(id+":"+lastName);
&a href="testJson" id="testJson"&Test Json&/a&
阅读(...) 评论()使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇_jquery
作者:用户
本文讲的是使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇_jquery,
调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化; 如果提交的数据使用复杂的json数据,例如: {userId:32323,userName:{firstName:&李&,lastNam
调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化; 如果提交的数据使用复杂的json数据,例如: {userId:32323,userName:{firstName:"李",lastName:"李大嘴"}} 那么服务器是无法正常接收到完整的参数,因为jQuery对data的序列化,是使用了键值对拼装的方式; 参数拼装成 userId=32323&userName= userName所指向的对象被序列化成字符串"object" 如何才能把一个复杂的object对象提交到后台的action参数中呢? 首先,解决jQuery对于参数序列化的问题:
复制代码 代码如下:
/*对象序列化为字符串*/ String.toSerialize = function(obj) { var ransferCharForJavascript = function(s) { var newStr = s.replace( /[\x26\x27\x3C\x3E\x0D\x0A\x22\x2C\x5C\x00]/g, function(c) { ascii = c.charCodeAt(0) return '\\u00' + (ascii & 16 ? '0' + ascii.toString(16) : ascii.toString(16)) } ); return newS } if (obj == null) { return null } else if (obj.constructor == Array) { var builder = []; builder.push("["); for (var index in obj) { if (typeof obj[index] == "function") if (index & 0) builder.push(","); builder.push(String.toSerialize(obj[index])); } builder.push("]"); return builder.join(""); } else if (obj.constructor == Object) { var builder = []; builder.push("{"); var index = 0; for (var key in obj) { if (typeof obj[key] == "function") if (index & 0) builder.push(","); builder.push(String.format("\"{0}\":{1}", key, String.toSerialize(obj[key]))); index++; } builder.push("}"); return builder.join(""); } else if (obj.constructor == Boolean) { return obj.toString(); } else if (obj.constructor == Number) { return obj.toString(); } else if (obj.constructor == String) { return String.format('"{0}"', ransferCharForJavascript(obj)); } else if (obj.constructor == Date) { return String.format('{"__DataType":"Date","__thisue":{0}}', obj.getTime() - (new Date(, 0, 0, 0)).getTime()); } else if (this.toString != undefined) { return String.toSerialize(obj); } }
jQuery异步请求:
复制代码 代码如下:
$(function() { /*按钮点击事件*/ $("#btn_post_test").click(function() { var data = [ { UserId: "11", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] }, { UserId: "22", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] }, { UserId: "33", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] } ]; $.post("Home/Test", { users: String.toSerialize(data) }, function(text) { alert(String.toSerialize(text)); }, "json"); }); });
点击按钮提交数据,监控浏览器,可以发现提交的数据是json对象的序列化后的内容:
复制代码 代码如下:
POST /Home/Test HTTP/1.1 x-requested-with: XMLHttpRequest Accept-Language: zh-cn Referer: http://localhost:3149/test.html Accept: application/json, text/javascript, */* Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 ( MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) Host: localhost:3149 Content-Length: 501 Connection: Keep-Alive Cache-Control: no-cache Cookie: CookieGlobalLoginUserID=16063 users=%5B%7B%22UserId%22%3A%C%22Name%22%3A%7B%22FirstName%22%3A%C%22LastName%22%3A%%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%2C%7B%22UserId%22%3A%C%22Name%22%3A%7B%22FirstName%22%3A%C%22LastName%22%3A%%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%2C%7B%22UserId%22%3A%C%22Name%22%3A%7B%22FirstName%22%3A%C%22LastName%22%3A%%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%5D
其次,后台服务器处理参数绑定:
复制代码 代码如下:
using System.Collections.G using System.Web.M using Newtonsoft.J using Newtonsoft.Json.L namespace WebOS.Controllers { [HandleError] public class HomeController : Controller { /// &summary& /// 测试方法 /// &/summary& /// &param name="users"&用户数据&/param& /// &returns&提交的用户数组&/returns& public ActionResult Test([ModelBinder(typeof(JsonBinder&User&))]List&User& users) { return Json(users, JsonRequestBehavior.AllowGet); } } /// &summary& /// 对象实体 /// &/summary& [JsonObject] public class User { [JsonProperty("UserName")] public UserName Name { } [JsonProperty("UserId")] public string UserId { } [JsonProperty("Keys")] public List&string& Keys { } } /// &summary& /// 对象实体 /// &/summary& [JsonObject] public class UserName { [JsonProperty("FirstName")] public string FirstName { } [JsonProperty("LastName")] public string LastName { } } /// &summary& /// Json数据绑定类 /// &/summary& /// &typeparam name="T"&&/typeparam& public class JsonBinder&T& : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { //从请求中获取提交的参数数据 var json = controllerContext.HttpContext.Request.Form[bindingContext.ModelName] //提交参数是对象 if (json.StartsWith("{") && json.EndsWith("}")) { JObject jsonBody = JObject.Parse(json); JsonSerializer js = new JsonSerializer(); object obj = js.Deserialize(jsonBody.CreateReader(), typeof(T));
} //提交参数是数组 if (json.StartsWith("[") && json.EndsWith("]")) { IList&T& list = new List&T&(); JArray jsonRsp = JArray.Parse(json); if (jsonRsp != null) { for (int i = 0; i & jsonRsp.C i++) { JsonSerializer js = new JsonSerializer(); object obj = js.Deserialize(jsonRsp[i].CreateReader(), typeof(T)); list.Add((T)obj); } }
前端获取到后台返回的数据,结果就是用户提交的数据: 后台json反序列化使用了Newtonsoft.Json 组件,有关资料请参考:/
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!

我要回帖

更多关于 使用父类作为返回值 的文章

 

随机推荐