我使用的是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