页面上使用json
json字符串 和 JavaScript 对象之间的转换
JSON.parse()、eval()、和jQuery.parseJSON()是json字符串---> js对象
JSON.stringify() 是js对象---> json字符串
ajax一般data参数传值的时候要 stringify() 匿名模拟对象 变成json传给控制器
而控制器返回json数据之后回调函数要JSON.parse(data)换成js对象 进一步处理
eg:
$.ajax({
url: "/Home/AddPrivateTour",
type: "POST",
traditional: true,
data: {
"Suggest": Suggest,
"Require": Require,
"privatetour": JSON.stringify(privatelist),
"list": JSON.stringify(ListPlace),
},
success: function (result) {
if (result == "Save successfully!") {
$("#divShowContactInfo").show();
$('body,html').animate({ scrollTop: $("#loc").offset().top }, 500);
//window.location.hash = "loc";
setTimeout(function () { location.href = "Privatetours"; }, 8000);
}
else {
alert("Save failed!");
}
}
});
为什么不用eval 的原因是因为eval不安全(避免在不必要的情况下使用 eval)
eval() 是一个危险的函数, 他执行的代码拥有着执行者的权利。
如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)操控修改,
您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。
更重要的是,第三方代码可以看到某一个eval()被调用时的作用域,
这也有可能导致一些不同方式的攻击。相似的 Function 就不容易被攻击
控制器.net使用 json 序列化 和 反序列化
一般使用 NewtonJson.dll
JsonConvert.SerializeObject(内容,格式化,handing条件属性比如去空去重)
eq:
string json = JsonConvert.SerializeObject(对象,Formatting.Indented(可读性好), new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore //去重
});
JsonConvert.DeserializeObject <实体>(json内容)