ASP.NET MVC 中使用Json的一点小疑问(已解决)
大多数情况下我们返回到客户端的Json有两种方式:
1、直接传对象给Json()去转成Json

public ActionResult JsonTest()
{
List<Result> list = new List<Result>();
list.Add(new Result { State = 2});
list.Add(new Result { State = 5 });
return Json(list,JsonRequestBehavior.AllowGet);
}
{
List<Result> list = new List<Result>();
list.Add(new Result { State = 2});
list.Add(new Result { State = 5 });
return Json(list,JsonRequestBehavior.AllowGet);
}
public ActionResult JsonTest()
{
List<Result> list = new List<Result>();
list.Add(new Result { State = 2});
list.Add(new Result { State = 5 });
return Json(list,JsonRequestBehavior.AllowGet);
}
{
List<Result> list = new List<Result>();
list.Add(new Result { State = 2});
list.Add(new Result { State = 5 });
return Json(list,JsonRequestBehavior.AllowGet);
}
public JsonResult JsonTest2()
{
string s=@"[{'State':2},{'State':5}]";
return Json(s, JsonRequestBehavior.AllowGet);
}
{
string s=@"[{'State':2},{'State':5}]";
return Json(s, JsonRequestBehavior.AllowGet);
}
前端都用同样的方法:
$(function() {
$.ajax({
type: "Get",
url: "Home/JsonTest",
data: { t: new Date() },
dataType: "json",
success: function(data) {
alert(data);
}
});
$.ajax({
type: "Get",
url: "Home/JsonTest2",
data: { t: new Date() },
dataType: "json",
success: function(data) {
alert(data);
}
});
});
$.ajax({
type: "Get",
url: "Home/JsonTest",
data: { t: new Date() },
dataType: "json",
success: function(data) {
alert(data);
}
});
$.ajax({
type: "Get",
url: "Home/JsonTest2",
data: { t: new Date() },
dataType: "json",
success: function(data) {
alert(data);
}
});
});
这时候得到的结果:
JsonTest : [object Object],[object Object] //已经被转成的Json数组
JsonTest2: [{'State'2},{'State':5}] //还是字符串
第二种情况解决办法到很简单:
alert(eval('(' + data + ')'));
运行字符串就可以得到Json数组.
打开reflector查看到JsonResult :
JavaScriptSerializer serializer = new JavaScriptSerializer();
response.Write(serializer.Serialize(this.Data));
response.Write(serializer.Serialize(this.Data));
事实上序列化之后都是string,不知道为什么会这样,不解!! 那位高人指点一二!
解决办法:
原因被重复的Serialize,所以不能用Json()去返回,改用Context就Ok了。
public ActionResult JsonTest2()
{
string s=@"[{""State"":2},{""State"":5}]";
return Content(s);
}
{
string s=@"[{""State"":2},{""State"":5}]";
return Content(s);
}
--------------------------------------------------------------------------
Daniel Chow's Blog - 不管你在哪里,都要有一颗创业的心!
http://www.cnblogs.com/DanielChow/
分类:
ASP.NET & MVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库