时间:2010-02-09 11:35:25

标签: jquery asp.net-mvc json

我在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);
       });

这里有什么想法出错

2 个答案:

答案 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");

请参阅Controller..::.Content Method

答案 1 :(得分:0)

您可以使用此功能:

RoadmapItem item = new RoadmapItem();

return JsonConvert.SerializeObject(item);

JsonConvert是Newtonsoft.Json.dll的成员。您可以点击它并在此处下载:http://james.newtonking.com/projects/json-net.aspx

当然方法GetTimeLineJson可以返回string;)