//1.Josn参数序列化
var obj = HttpPostHelper.DeserializeObject<S_USER>(Request);
S_USER---S_USER类
/****************************** Module Header ******************************
Author:
Create Date: 2018-10-9
Explain: HttpPost帮助类
Alter History:
***************************************************************************/
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Script.Serialization;
namespace BD.Common
{
/// <summary>
/// HttpPost帮助类
/// </summary>
public class HttpPostHelper
{
/// <summary>
/// 保存接收并返回Model实体对象
/// </summary>
/// <typeparam Model实体类="T"></typeparam>
/// <param 控制器层面直接传递Request="Request"></param>
/// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
/// 前台ajax格式约定: data: JSON.stringify(参数对象),不需要像普通的方法,用data:{ a:'a' , b:'b', c:'c'}
/// <returns></returns>
public static T DeserializeObject<T>(HttpRequestBase Request)
{
try
{
StreamReader sr = new StreamReader(Request.InputStream);
string stream = sr.ReadToEnd();
var obj = new JavaScriptSerializer().Deserialize<T>(stream);
return obj;
}
catch (Exception e)
{
return default(T);
}
}
/// <summary>
/// 保存接收并返回Model实体对象
/// </summary>
/// <typeparam Model实体类="T"></typeparam>
/// <param 控制器层面直接传递Request="Request"></param>
/// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
/// 前台ajax格式约定: data: JSON.stringify(参数对象),不需要像普通的方法,用data:{ a:'a' , b:'b', c:'c'}
/// <returns></returns>
public static T DeserializeObject<T>(HttpRequestBase Request, Dictionary<string, string> dic)
{
try
{
StreamReader sr = new StreamReader(Request.InputStream);
string stream = sr.ReadToEnd();
foreach (var item in dic)
{
stream = stream.Replace(item.Key, item.Value);//需要替换 单条
}
var obj = new JavaScriptSerializer().Deserialize<T>(stream);
return obj;
}
catch (Exception e)
{
return default(T);
}
}
/// <summary>
/// 保存接收并返回Model实体对象
/// </summary>
/// <typeparam Model实体类="T"></typeparam>
/// <param 控制器层面直接传递Request="Request"></param>
/// 使用方法:如果JSON里带ID,则ID必须为有值的参数,建议赋“0”,否则会导致JSON为空无法解析而报错。
/// 前台不约定ajax格式,可任意带参,只需要把json的str丢到这里
/// <returns></returns>
public static T DeserializeObject<T>(string strJson)
{
try
{
var obj = new JavaScriptSerializer().Deserialize<T>(strJson);
return obj;
}
catch (Exception)
{
return default(T);
}
}
}
}
前端配合使用套路: var obj = $("#userForm").serializeObject();// 对象
userForm:form表单id
jQuery serializeObject 序列化form表单Json对象
/**
* 使用场景:ajax提交表单数据
*/
/*
<form>
<input type="text" name="username" value="123"/>
<input type="text" name="password" valur="abc"/>
</form>
*/
// 1. serialize() —— 序列化form表单 带name属性的内容为字符串
JQuery("form").serialize();
// "username="123&password="abc"
// 2. serializeArray() ——返回JSON 对象数组
JQuery("form").serializeArray();
// [{name:"username",value:"123"},{name:"password",value:"abc"}]
// 3. 封装一个方法: serializeObject() ——返回对象
JQuery("form").serializeObject()
//{username:"123",passwoed:"123"}
JQuery.prototype.serializeObject = function () {
var a,o,h,i,e;
a = this.serializeArray();
o={};
h=o.hasOwnProperty;
for(i=0;i<a.length;i++){
e=a[i];
if(!h.call(o,e.name)){
o[e.name]=e.value;
}
}
return o;
}
$("#formTable").serializeArray()使用例子
//获取表单并返回
function getSearchValue() {
var val = $("#formTable").serializeArray();
return JSON.stringify(val);
}
$.ajax({
url: "/salary_Analysis/Query",
type: "POST",// POST,默认是GET
dataType: 'json',//根据返回数据类型可以有这些类型可选:xml html script json jsonp text
async: true,//是否异步请求
data: {//请求携带的参数信息
search: getSearchValue(),
},
} )
public string Query(int limit, int offset, string search)
{
dynamic searchJson = JsonConvert.DeserializeObject<dynamic>(search);
for (int i = 0; i < searchJson.Count; i++)
{
if ((string)searchJson[i].name == "所在部门")
{
if ((string)searchJson[i].value != "0")
{
ps:namey与value是人为规定的字段即前台input的name
}
}
}
}