1. 程式人生 > >asp.net MVC控制器返回json問題總結

asp.net MVC控制器返回json問題總結

在MVC專案中,經常需要在控制器中向客戶端返回json資料,常見的返回方法如下:

1、如果伺服器端完全採用微軟的類,則要序列號的集合類通常使用List<T>,返回時直接使用Json(list);則會自動將列表中的內容進行序列號,生成json字串。

2、如果伺服器端使用DataTable,則DataTable微軟自己不能序列號,很奇怪!要使用Json(table)返回,是不能直接序列號的。還需要將行定義成物件,如:

class Person
        {
            public string username { get; set; }
            public string truename { get; set; }
            public int age { get; set; }
        }
----------------------------------
List<Person> list = new List<Person>();
            DataTable dt = new DataTable();
            try
            {
                sqlcnn.Open();
                SqlDataReader reader = sqlcmm.ExecuteReader();

                while (reader.Read())
                    list.Add(new Person { username = reader.GetString(0), truename = reader.GetString(1), age = reader.GetInt32(2) });
                //讀取資料
                sqlcnn.Close();
               
            }
            catch
            {
                
            }
            return Json(list, JsonRequestBehavior.AllowGet);

這樣比較囉嗦。

3、直接使用Newtonsoft.json對table進行序列化,得到json字串。

此時不能使用Json(str)的形式返回,這樣返回的話,客戶端不會識別為json。

可以直接返回Content(str)即可。

4、如果採用字串拼接的形式,同方法3.

在瀏覽器中測試時,返回如下內容,說明有問題,在客戶不會被自動解析成json。


測試時,返回如下結果,說明正常返回了json串。