2013-06-28 16 views
1

我正在使用jqGrid,並使用getRowData我正在讀取jqGrid數據。之後,我申請JSON.stringify(rowData)最後我得到的結果爲:在asp.net mvc控件中反序列化錯誤

[ 
    { 
     "FIRST_NAME": "Krish", 
     "LAST_NAME": "Patil", 
     "EMPLOYEE_TYPE": "Consultant", 
     "TITLE": "Application Resource", 
     "LOCATION": "USA ", 
     "CENTER_NAME": "Application Development & Testing", 
     "EMAIL": "[email protected]", 
     "COMMENTS": "testing" 
    } 
] 

像預期的那樣「的JavaScript」它的正常工作。但是,一旦我將這些數據發送給控制器並試圖對其進行反序列化,我將得到一個未終止的字符串錯誤"CENTER_NAME":"Application Development .. 由於'&'(特殊字符)它正在發生。我如何解決這個問題,請諮詢相同的意見。

------解串碼------------

JavaScriptSerializer ser = new JavaScriptSerializer(); 
UserData result = ser.Deserialize<UserData>(userData); 

回答

0

我建議你來驗證userData您所使用的類型。您不會發布更多完整的ASP.NET MVC代碼,您可以使用它。我想數據(變量userData)已經被反序列化爲ASP.NET MVC的對象。 JSON規範(請參閱here)非常簡單。只有"\個字符必須是轉義。還有一些可能被轉義的其他字符(例如/)。我無法想象JavaScriptSerializer可能有錯誤的處理&字符的錯誤。

修訂:在代碼中的一個可能的錯誤是是什麼UserData類使用。也許代碼應該是

List<UserData> result = ser.Deserialize<List<UserData>>(userData); 

,而不是

UserData result = ser.Deserialize<UserData>(userData); 

因爲你送的物品的排列。以任何方式與代碼

using System; 
using System.Collections.Generic; 
using System.Web.Script.Serialization; 

namespace DeserializationTest { 
    public class UserData { 
     public string FIRST_NAME; 
     public string LAST_NAME; 
     public string EMPLOYEE_TYPE; 
     public string TITLE; 
     public string LOCATION; 
     public string CENTER_NAME; 
     public string EMAIL; 
     public string COMMENTS; 
    }; 

    class Program { 
     static void Main() { 
      const string userData = "[{\"FIRST_NAME\": \"Krish\",\"LAST_NAME\": \"Patil\",\"EMPLOYEE_TYPE\": \"Consultant\",\"TITLE\": \"Application Resource\",\"LOCATION\": \"USA \",\"CENTER_NAME\": \"Application Development & Testing\",\"EMAIL\": \"[email protected]\",\"COMMENTS\": \"testing\"}]"; 
      var ser = new JavaScriptSerializer(); 
      var result = ser.Deserialize<List<UserData>>(userData); 
      Console.WriteLine("result[0].CENTER_NAME={0}", result[0].CENTER_NAME); 
     } 
    } 
} 
沒有任何異常

工作,並在控制檯上顯示以下文字的程序:

result[0].CENTER_NAME=Application Development & Testing