asp.net mvc控件中的反序列化错误



我使用的是jqGrid,而通过使用getRowData,我获取的是jqGrid数据。之后我应用JSON.stringify(rowData),最后得到的结果是:

[
    {
        "FIRST_NAME": "Krish",
        "LAST_NAME": "Patil",
        "EMPLOYEE_TYPE": "Consultant",
        "TITLE": "Application Resource",
        "LOCATION": "USA ",
        "CENTER_NAME": "Application Development & Testing",
        "EMAIL": "goal@test.com",
        "COMMENTS": "testing"
    }
]

它在"JavaScript"中运行良好。然而,一旦我将这些数据发送到控制器并尝试对其进行反序列化,我就会收到一个未终止的字符串错误"CENTER_NAME":"Application Development ..由于"&"(特殊人物)它正在发生。我该如何解决这个问题,请提供同样的建议。

------反序列化代码---------------

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

我建议您验证您使用的userData的类型。您没有发布您使用的更完整的ASP.NET MVC代码。我假设数据(变量userData)已经被ASP.NET MVC反序列化为对象。JSON规范(请参阅此处)非常简单。只有"字符必须转义。还有一些可以转义的其他字符(例如/)。我无法想象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": "goal@test.com","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

最新更新