javascript - 如何将字符串转换为 JSON 对象

标签 javascript jquery json asp.net-mvc-3

timeline.js + MVC + Ajax + JSON

你好,

我在将字符串转换为 Json 对象时遇到问题

我必须在我的网页上显示时间线,我已经使用 Timeline.js 来实现相同的目的,我可以使用如下所示的静态数据运行时间线

静态数据

// Create a JSON data table
data = [
{
        'start': new Date(2010, 7, 23),
    'content': 'Conversation'
},
{
    'start': new Date(2010, 7, 23),
    'content': 'New Conversation'
},
{
    'start': new Date(2010, 7, 23),
    'content': 'Very New Conversation'
}

现在当我这样做

alert(data);

它给了我

[object Object],[object Object],[object Object]

但现在我必须显示来自数据库的数据,因此我在 Controller 上调用以下函数

Controller 上的GetTimeLine方法

public JsonResult GetTimeline()
{
      JsonResult jr = new JsonResult();
      var objtimeline = objEntities.Timelines.Where(tl => tl.StudentID == Sessions.StudentID).ToList().AsQueryable();
      String newstr = "[";
      foreach(var tml in objtimeline)
      {
            DateTime date1 = Convert.ToDateTime(tml.CalculatedDate);
            newstr += "{'start': new  Date("+date1.Year+","+date1.Month+","+date1.Day+","+date1.Hour+","+date1.Minute+","+date1.Second+"),'content':'"+tml.Description+"'},";
      }
      newstr = newstr.TrimEnd(',');
      newstr += "];";
      jr.Data = newstr;
      jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
      return jr;
}

调用 Controller 方法的函数

jQuery.ajax({
    type: "POST",
    url: "@Url.Content("~/Student/GetTimeline")",
    success: function (result) {
        data = result;
    },
});
alert(data);

它给了我以下警报

[{'start': new Date(2012,2,11,0,0,0),'content':'Parents meeting'},{'start': new Date(2012,2,15,0,0,0),'content':'Exam Meeting'}];

所以问题在于将字符串转换为 Json 对象,

如何将从 Controller 返回的字符串转换为 View 上的 Json 对象...

最佳答案

你太辛苦了。让框架为您做这件事。

public JsonResult GetTimeline()
{
     var timeline = objEntities.TimeLines.Where( tl => tl.StudentID == Sessions.StudentID )
                                         .ToList() //required due to Convert call
                                         .Select( tl => new
                                          {
                                               start = Convert.ToDateTime(tl.CalculatedDate),
                                               content = tl.Description
                                          });
     return Json( timeline, JsonRequestBehavior.AllowGet );
}

然后使用 getJSON (因为您明确允许获取)或在请求中指定 dataType: 'json'

$.getJSON( '@Url.Action("gettimeline","student")', function(data) {
     alert(data);
});

关于javascript - 如何将字符串转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153884/

相关文章:

javascript - 使用javascript从cron格式获取日期时间

javascript - var a = b = 2 和 var a = 2 之间有什么区别? var b = 2;

javascript - 在 div 上阻止选择允许在 div 周围选择

javascript - 嵌入式视频的结束事件

JavaScript:客户端与服务器端验证

javascript - 显示/隐藏内容而不重新加载页面

javascript - 根据动态表中的另一个选择选项选择选项值

javascript - $.getJSON 不返回结果

json - spring-mvc 返回原始 json 字符串

jquery - Kendo UI Treeview 的 JSON 未更新。正在加载