如何将从javascript(使用jquery.ajax)发送的json对象反序列化为.aspx页面(不是Web服务)?
e.g。如果我有以下json对象;
var json = {"name" : "michael", "surname" : "brown", "age" : "35"}
我用
$.post('process.aspx', json)
如何在process.aspx代码中反序列化json?
另外,我如何在我的情况下使用$ .postJSON()?
答案 0 :(得分:3)
您可以使用内置于.Net 3.5中的DataContractJsonSerializer,或者我们使用的是一个很棒的开源Json库:http://jayrock.berlios.de/
要使用DataContractJsonSerializer,您的代码可能如下所示:
var serializer = new DataContractJsonSerializer(typeof(Person));
using (MemoryStream ms = new MemoryStream(new ASCIIEncoding().GetBytes(myString)))
{
try
{
Person obj = serializer.ReadObject(ms) as Person;
}
catch (Exception e)
{
throw new InvalidOperationException("Could not deserialize Person.", e);
}
}
答案 1 :(得分:1)
NewtonSoft库是个不错的选择。
答案 2 :(得分:1)
您可以使用DataContractJsonSerializer:
class Program
{
[DataContract]
class Person
{
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "surname")]
public string Surname { get; set; }
[DataMember(Name="age")]
public int Age { get; set; }
}
static void Main(string[] args)
{
var json = @"{""name"" : ""michael"", ""surname"" : ""brown"", ""age"" : ""35""}";
var serializer = new DataContractJsonSerializer(typeof(Person));
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
var person = (Person)serializer.ReadObject(stream);
Console.WriteLine("Name : {0}, Surname : {1}, Age : {2}",
person.Name, person.Surname, person.Age);
}
}
}