您的位置:首页 > Web前端 > JavaScript

Newtonsoft.Json.dll 中的序列化与反序列化

2016-03-09 17:54 591 查看
在我们开发web项目的时候,很多情况下需要从页面传递一组数据获取从后台取一组数据。以前开发项目的时候会习惯性地选择凭借字符串:

在页面中:

data=”data1:”+value1+”data2:”+value2;

然后后台页面通过String的Split方法拆分来得到对应字段的值。或者后台拼接字符串,前台拆分。

这样确实能达到想要的结果。但会出现一些问题:当字段过多,很容易拼接出现问题。同时,当含有特殊字符时,转化会出现一些问题。

通过Newtonsoft.Json.dll 中的序列化与反序列化来解决是一个不错的办法。

封装序列化函数:

public class JsonHelper
{
public static string SerializeObject(Object value)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(value);
}

public static T DeserializeObject<T>(string json)
{
if (string.IsNullOrEmpty(json))
return default(T);

return JsonConvert.DeserializeObject<T>(json);
}
}


创建模型:

public class TableModel
{
public string Colom1 { get; set; }
public string Colom2 { get; set; }
public string Colom3 { get; set; }
public string Colom4 { get; set; }
}


然后就可以使用了:

1.前台向后台传递,通过Jquery的Json序列化:

var table = [];
table.push({ "Colom1": "11", "Colom2": "22", "Colom3": "33", "Colom4": "44" });
table.push({ "Colom1": "11", "Colom2": "22", "Colom3": "33", "Colom4": "44" });
table.push({ "Colom1": "11", "Colom2": "22", "Colom3": "33", "Colom4": "44" });
table.push({ "Colom1": "11", "Colom2": "22", "Colom3": "33", "Colom4": "44" });
table.push({ "Colom1": "11", "Colom2": "22", "Colom3": "33", "Colom4": "44" });

var data = { "data": JSON.stringify(table) };

//alert(jsonStr);
$.ajax({
type: 'post',
url: "/test/default/settable",
dataType: 'json',
data: data,
success: function (data) {

}
});
});


后台接收:

[Route("settable")]
public ActionResult GetTable(string data)
{
List<TableModel> list = JsonHelper.DeserializeObject<List<TableModel>>(data);

return View();
}


2.通过后台取值

[Route(“gettable”)]

public JsonResult GetTable()

{

List list = new List();

list.Add(new TableModel

{

Colom1 = “1”,

Colom2 = “2”,

Colom3 = “3”,

Colom4 = “4”

});

list.Add(new TableModel

{

Colom1 = “1”,

Colom2 = “2”,

Colom3 = “3”,

Colom4 = “4”

});

list.Add(new TableModel

{

Colom1 = “1”,

Colom2 = “2”,

Colom3 = “3”,

Colom4 = “4”

});

list.Add(new TableModel

{

Colom1 = “1”,

Colom2 = “2”,

Colom3 = “3”,

Colom4 = “4”

});

string result = JsonHelper.SerializeObject(list );

return Json(new {table= JsonHelper.SerializeObject(list )});

}

前台反序列化:

$.ajax({
type: 'get',
url: "/test/default/gettable",
dataType: 'json',
success: function (data) {
var message = "";
data.table = JSON.parse(data.table);  //发序列化
$.each(data.table, function (i, item) {

});

}
});


大致方式就是这样。就不用再通过字符串的方式拼接json格式的对象了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: