как преобразовать строку в объект Json для возврата к вызову jQuery getJson - PullRequest
0 голосов
/ 09 февраля 2010

у меня есть код в csharp, который возвращает эту строку:

{'dateTimeFormat': 'iso8601', 'wikiURL': "http://simile.mit.edu/shelf/", 'wikiSection': "Хронология Simile Cubism", 'События' : [ {'начало': '1924', 'title': 'Barfusserkirche', «описание»: «Лионель Фейнингер, американский / немецкий художник, 1871–1956», 'image': 'http://images.allposters.com/images/AWI/NR096_b.jpg', 'ссылка': '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 ]

2 голосов
/ 09 февраля 2010

В вашем примере строка {'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");

см. Контроллер .. ::. Метод содержимого

0 голосов
/ 10 февраля 2010

Вы можете использовать это:

RoadmapItem item = new RoadmapItem();

return JsonConvert.SerializeObject(item);

JsonConvert является членом Newtonsoft.Json.dll. Вы можете прочитать об этом и скачать здесь: http://james.newtonking.com/projects/json-net.aspx

Конечно, метод GetTimeLineJson может возвращать строку;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...