我正在使用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);
答案 0 :(得分:0)
我建议您验证您使用的userData
的类型。您没有发布更多使用的完整ASP.NET MVC代码。我认为ASP.NET MVC已经将数据(变量userData
)反序列化为对象。 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\": \"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