Javascript 如何将字符串转换为JSON对象
timeline.js+MVC+Ajax+JSON 你好, 将字符串转换为Json对象时出现问题 我必须在我的网页上显示时间线,我使用了timeline.js,我能够使用静态数据运行时间线,如下所示 静态数据 现在当我这么做的时候Javascript 如何将字符串转换为JSON对象,javascript,jquery,json,asp.net-mvc-3,Javascript,Jquery,Json,Asp.net Mvc 3,timeline.js+MVC+Ajax+JSON 你好, 将字符串转换为Json对象时出现问题 我必须在我的网页上显示时间线,我使用了timeline.js,我能够使用静态数据运行时间线,如下所示 静态数据 现在当我这么做的时候 alert(data); 它给了我 [object Object],[object Object],[object Object] 但现在我必须显示数据库中的数据,所以我在控制器上调用以下函数 控制器上的GetTimeLine方法 函数调用控制器方法 它给了我以下
alert(data);
它给了我
[object Object],[object Object],[object Object]
但现在我必须显示数据库中的数据,所以我在控制器上调用以下函数
控制器上的GetTimeLine方法
函数调用控制器方法
它给了我以下警告
[{'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对象的转换
如何将控制器返回的字符串转换为视图上的Json对象…服务器返回的内容无效。或者给出您的服务器端代码,它可能是有效的JSON,它只定义一个字符串而不是一个对象图。在JSON中:
- 所有对象键必须使用双引号,而不是单引号
- 所有字符串必须使用双引号,而不是单引号
无效(JSON没有任何日期概念)新日期(…)
jr.Data
,然后让它为您处理序列化(但我在ASP.net MVC中没有这样做)
一旦服务器返回有效的JSON,请确保它返回的内容类型正确(值为
application/JSON
)。当您这样做时,jQuery将看到它是JSON,并将其反序列化为一个对象图。如果您不能或不想让服务器返回有效的JSON,请在ajax
调用中添加dataType:'JSON'
,以强制执行此操作。服务器返回的内容无效。或者给出您的服务器端代码,它可能是有效的JSON,它只定义一个字符串而不是一个对象图。在JSON中:
- 所有对象键必须使用双引号,而不是单引号
- 所有字符串必须使用双引号,而不是单引号
无效(JSON没有任何日期概念)新日期(…)
jr.Data
,然后让它为您处理序列化(但我在ASP.net MVC中没有这样做)
一旦服务器返回有效的JSON,请确保它返回的内容类型正确(值为
application/JSON
)。当您这样做时,jQuery将看到它是JSON,并将其反序列化为一个对象图。如果您不能或不想让服务器返回有效的JSON,请在ajax
调用中添加dataType:'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
(因为您特别允许gets),或者在请求中指定dataType:'json'
$.getJSON( '@Url.Action("gettimeline","student")', function(data) {
alert(data);
});
你工作太辛苦了。让框架为您做这件事
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
(因为您特别允许gets),或者在请求中指定dataType:'json'
$.getJSON( '@Url.Action("gettimeline","student")', function(data) {
alert(data);
});
我认为您需要再看看JSON对象及其语法。如果它是用Javascript中的
[
和]
包装的,那么它是一个数组,而不是一个对象(JSON或其他)。@AnthonyGrist:将数组作为顶级对象是有效的JSON。(然而,带引号的字符串不是,不是那些单引号,并且新日期(…)
在那里。)@T.J.Crowder看来我是需要重新检查语法的人,那么@IT ppl:没有a这样的东西(好吧,在一些浏览器中,有parseJSON
和stringify
方法,但这显然不是你要问的)。有JS对象、对象文本和JSON。AJAX请求的结果是一个JSON字符串。@AnthonyGrist:是的,嗯,有点不清楚。更明确地说,顶层可以是对象或数组。有趣的是,进一步说,它可以是任何JSON值(因此它本身只包含一个字符串或数字)。如果它是用Javascript中的[
和]
包装的,那么它是一个数组,而不是一个对象(JSON或其他)。@AnthonyGrist:将数组作为顶级对象是有效的JSON。(然而,带引号的字符串不是,不是那些单引号,并且新日期(…)
在那里。)@T.J.Crowder看来我是需要重新检查语法的人,那么@IT ppl:没有a这样的东西(好吧,在一些浏览器中,有parseJSON
和stringify
方法,但这显然不是你要问的)。有JS对象、对象文本和JSON。AJAX请求的结果是一个JSON字符串。@AnthonyGrist:是的,嗯,有点不清楚。更明确地说,顶层可以是对象或数组。有趣的是,更进一步说,它可以是任何JSON值(因此它本身只包含一个字符串或数字)。是的,我想从控制器返回可由timeline.js使用的数组,还有其他方法吗?@ITppl:正如我所说的:“我相信你想建立一个数组(而不是字符串)并将其分配给jr.Data
,然后让JsonResult
对象为您处理序列化“是的,我想从控制器返回可由timeline.js使用的数组,还有其他方法吗?@ITppl:正如我所说的:“我相信您想要构建一个数组(而不是字符串)并将其分配给jr.Data
,然后让JsonResult
对象为您处理序列化“gettimeline方法给出以下错误-
$.getJSON( '@Url.Action("gettimeline","student")', function(data) {
alert(data);
});