1

私がやりたいことは、JSON をブラウザーに返すことだけです。

これが現在返されているものです。これは JSON ですが、文字列内にあります。JSON だけを返すにはどうすればよいですか?

そして、ここに私のコードがあります:

namespace ...Controllers
{
    public class NotificationsController : ApiController
    {
        public string getNotifications(int id)
        {
            var bo = new HomeBO();
            var list = bo.GetNotificationsForUser(id);
            var notificationTreeNodes = (from GBLNotifications n in list
                                         where n.NotificationCount != 0
                                         select new NotificationTreeNode(n)).ToList();
            List<Node> lOfNodes = new List<Node>();
            foreach (var notificationTreeNode in notificationTreeNodes)
            {
                Node nd = new Node();
                nd.notificationType = notificationTreeNode.NotificationNode.NotificationType + " " + "(" + notificationTreeNode.NotificationNode.NotificationCount + ")";
                var notificationList = bo.GetNotificationsForUser(id, notificationTreeNode.NotificationNode.NotificationTypeId).Cast<GBLNotifications>().ToList();
                List<string> notificationDescriptions = new List<string>();
                foreach (var item in notificationList)
                {
                    notificationDescriptions.Add(item.NotificationDescription);
                }
                nd.notifications = notificationDescriptions;
                lOfNodes.Add(nd);
            }
            var oSerializer = new JavaScriptSerializer();
            string sJSON = oSerializer.Serialize(lOfNodes);
            return sJSON;
        }
    }

    public class Node
    {
        public string notificationType
        {
            get;
            set;
        }

        public List<string> notifications
        {
            get;
            set;
        }
    }
}

このコントローラーの URL で GET を実行しようとすると、Fiddler は JSON の下に何も表示しません。

ここで何が問題なのか知っている人はいますか?

4

1 に答える 1

4

JSON を返すため:

var oSerializer = new JavaScriptSerializer();
string sJSON = oSerializer.Serialize(lOfNodes);
return sJSON;

これを行う代わりに、単に戻りlOfNodes(そして戻り値を に変更List<Node>)、組み込みのコンテンツ ネゴシエーションに依存する必要があります。

AcceptWeb API は、ヘッダーに応じて XML または JSON を返します。他のフォーマットが必要な場合は、独自のフォーマッタを簡単に作成できます。

編集:

Kendo UI に問題があるため (リクエストがどのように行われるかわかりません)、XML フォーマッター明示を削除すると役立つ場合があります。例については、この投稿を参照してください。

于 2013-07-29T18:54:42.970 に答える