在web开发中很多场景都使用了json数据格式进行前后端交互,json使用场景太多了,每个开发者都会遇到。感觉做web前端的东西真的很重要!
前端处理json字符串
在json数据和json对象相互转化,最好使用Newtonsoft.Json,常用的两种方法,第一个是将对象序列化为json,在序列化为json时候,有时候会用到匿名对象,使用匿名对象比自己新建实体类要简单一些。废话不说先上代码
public object Ajax()
{
string Name = "jindou";
string Active = "changge";
int Num = 1;
decimal Price = 500;
var People = new
{
Name,
Active,
Num,
Price,
};
var events = JsonConvert.SerializeObject(People);
return events;
}
用一个匿名对象People,使用Newtonsoft中的JsonConvert.SerializeObject(),将匿名对象序列化为json字符串,将序列化的字符串返回。
在前端处理获取到的json字符串
var result = JSON.parse(res);
alert(result.Name + result.Active + result.Num + result.Price);
在前端使用JSON.parse();将序列化的json字符串转为json对象,这里就是涉及到反序列化,将json字符串华转化为对象的过程就是反序列化。 但是js反序列化拿到的对象,不能和后端代码的类一样去点出属性,因为js是弱类型的语音,只有通过自己去写出相关属性,才能正确使用。
后端处理json字符串
后端处理json字符串也是经常遇到的,前端将json对象序列化为json字符串,将json字符串传递给后端方法。后端方法将json字符串反序列化为对象。这是一个过程。
var ml = {
Name:"yusaohong",
Year:12,
Active:"kk",
}
var arr = ["Name", "Active"];
var go = JSON.stringify(ml, arr);//将js对象转化为字符串
$.post("@Url.Action("GetJs","GetJson")", { Detail: go }, function (res) {
var de = JSON.parse(res);
var arrayd = de.MyArray;
})
前端将js对象使用JSON.stringify()方法序列化为json字符串。对于JSON.stringify()方法中,可以加一个参数,对json对象中某些属性进行筛选。要传入一个数组,数组中的内容是要筛选的属性名字。比较方便使用。在获取到json字符串之后,后端的处理方式也很简单。、
public object GetJs(string Detail)
{
People p = JsonConvert.DeserializeObject<People>(Detail);
string result = "ok";
return result;
}
Newtonsoft方法提供了反序列化的方法,比较常用的有DeserializeObject(string value)返回一个新的泛型类对象。