我在csharp中有代码返回此字符串:
{'dateTimeFormat':'iso8601', 'wikiURL':“http://simile.mit.edu/shelf/”, 'wikiSection':“Simile Cubism Timeline”, '事件':[ {'start':'1924', 'title':'Barfusserkirche', 'description':'由Lyonel Feininger,美国/德国画家,1871-1956', 'image':'http://images.allposters.com/images/AWI/NR096_b.jpg', 'link':'http://www.allposters.com/-sp/Barfusserkirche-1924-Posters_i1116895_.htm' } ] }
我希望将它作为JSon结构发送回我的视图,但它似乎不起作用:
这是我的控制器代码:
public JsonResult GetTimeLineJson(int id)
{
RoadmapItem item = new RoadmapItem();
string timelineString = [There is a function here that returns the string above];
return Json(timelineString);
}
这是我的jquery代码:
var URL = "/Business/GetTimeLineJson/" + resourceId;
$.getJSON(URL, function(data) {
$('#deskView').show();
onLoad(data);
});
这里有什么想法出错
答案 0 :(得分:2)
在您的示例中,字符串 {'dateTimeFormat': ...-1924-Posters_i1116895_.htm' } ] }
将进行JSON编码并发送到客户端,即数据是双重编码的。
是否可以跳过string timelineString =...
行并将“原始”数据传递给Json()方法?
究竟是什么[There is a function here that returns the string above]
在做什么?
编辑:
无论你传递给Controller.Json(对象)的是什么,在发送到客户端之前都会获得json / javascript编码(通过Web.Script.Serialization.JavaScriptSerializer)。
例如。如果要发送带有“a”和“b”作为元素(json编码)的数组,则客户端必须接收字符串["a","b"]
。但是如果您将["a","b"]
传递给Controller.Json(),客户端将收到"[\"a\",\"b\"]"
你可能想要
return Content(timelineString, "application/json");
答案 1 :(得分:0)
您可以使用此功能:
RoadmapItem item = new RoadmapItem();
return JsonConvert.SerializeObject(item);
JsonConvert是Newtonsoft.Json.dll的成员。您可以点击它并在此处下载:http://james.newtonking.com/projects/json-net.aspx
当然方法GetTimeLineJson可以返回string;)