首先JSON本身就是一个字符串,不具有对象性质
两种方法
1 可以在前台处理,使用JSONparse(expr)将字符串转为对象,但是这个方法貌似对JSON格式检查的非常严格,比如双引号
2 可以在后台进行处理,使用一些JSON处理类库,比如JSONObject
将数据以json格式传给前端:
function generateDtb() {
//写入
var txtName = documentgetElementById("txtName")value;
//创建数组
var dtb = new Array();
//通过循环把数据写入到数组并返回
for (var i = 0; i < firstGrouplength; i++) {
var row = new Object();
rowName = txtName;
rowfullMoney = firstGroup[i]value;
rowdiscount = secondGroup[i]value;
dtbpush(row);
}
return dtb;
}
把数组转换成json串传入到后台:
$(function () {
//点击botton1
$("#lbtnOK")click(function () {
var url = "DiscountMangeraspxajax=1";
var dtb = generateDtb();
// var strName = documentgetElementById("txtName")value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = JSONstringify(dtb);
//异步请求
$post(url, { json: postdata }, function (json) {
if (json) {
jBoxtip("添加成功!", "提示");
locationreload();
}
else {
jBoxtip("添加失败!", "提示");
locationreload();
}
}, "json")
}
});
});
在后台的 *** 作:
首先判断是否需要传输数据
if (!IsPostBack)
{
//判断是否异步请求
if (RequestQueryString["ajax"] == "1")
{
ProcessRequest();
}
在这里进行对数据的处理:
///
/// 处理异步请求
///
private void ProcessRequest()
{
//存入要填写的策略
ArrayList arrDiscount = new ArrayList();
ResponseContentType = "text/html";
string json = RequestForm["json"];
//反序列化DataTable
if (json == null)
{
return;
}
else
{
DataTable newdtb = Json2Dtb(json);
for (int i = 0; i < newdtbRowsCount; i++)
{
EntityStrategyDiscount enStrategyDiscount = new EntityStrategyDiscount();
//打折方案名
enStrategyDiscountname = newdtbRows[i]["Name"]ToString();
//商店ID
enStrategyDiscountshopId = longParse(LoginInfoShopID);
enStrategyDiscountfullMoney = ConvertToDecimal(newdtbRows[i]["fullMoney"]ToString());
enStrategyDiscountdiscount = ConvertToDecimal(newdtbRows[i]["discount"]ToString());
//写入数据到数组
arrDiscountAdd(enStrategyDiscount);
}
//写入数据到数据库
IStrategyBLL strategy = new StrategyBLL();
if (strategyAddStrategyDiscount(arrDiscount))
{
ResponseWrite("true");
ResponseEnd();
}
else
{
ResponseWrite("false");
ResponseEnd();
}
}
这里,我们需要把json转换成datatable
///
/// Json转DataTable
///
///
///
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jssDeserialize(json);
DataTable dtb = new DataTable();
if (dicCount > 0)
{
foreach (Dictionary drow in dic)
{
if (dtbColumnsCount == 0)
{
foreach (string key in drowKeys)
{
dtbColumnsAdd(key, drow[key]GetType());
}
}
DataRow row = dtbNewRow();
foreach (string key in drowKeys)
{
row[key] = drow[key];
}
dtbRowsAdd(row);
}
}
return dtb;
}
这样,就可以把数据无刷新的写入到数据库。
当然,如果我们有一个从数据库读取的datatable,如果通过json显示在前台呢。
首先,我们需要把datatable转换为json数据
///
/// DataTable转Json
///
///
///
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow row in dtbRows)
{
Dictionary drow = new Dictionary();
foreach (DataColumn col in dtbColumns)
{
drowAdd(colColumnName, row[colColumnName]);
}
dicAdd(drow);
}
return jssSerialize(dic);
}
然后写回到前台
///
/// 处理异步请求
///
private void ProcessRequest()
{
ResponseContentType = "text/html";
string json = RequestForm["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable为JSON
string back = Dtb2Json(newdtb);
ResponseWrite(back);
ResponseEnd();
}
在前台接受显示:
$(function() {
//点击botton1
$("#botton1")click(function() {
createTable(json);
});
});
//显示Json中的数据
function createTable(json) {
var table = $("");
for (var i = 0; i < jsonlength; i++) {
o1 = json[i];
var row = $("");
for (key in o1) {
var td = $("");
tdtext(o1[key]toString());
tdappendTo(row);
}
rowappendTo(table);
}
tableappendTo($("#back"));
}
一般是这样的,先将对象类型(在js中json就是一个对象),使用jsonjs(有些浏览器支持,有些需要引入)的方法:
JSONparse(jsonstr); //可以将json字符串转换成json对象
JSONstringify(jsonobj); //可以将json对象转换成json对符串
的第二个转换成字符串,然后把字符串当作一个参数的值再为其添加一个key然后以key/value的格式将数据传到后台。
之后后台使用requestgetParameter();的方式得到json数据。
以上就是关于怎么将前台符json格式的数组传到后台,并接收全部的内容,包括:怎么将前台符json格式的数组传到后台,并接收、如何拿到前端传过来的json对象、java后台怎样获取前台的json数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)