deserialise json服务器端
如何将从javascript(使用jquery.ajax)发送的json对象反序列化为.aspx页面(不是Web服务)?
例如,如果我有以下json对象;
var json = {"name" : "michael", "surname" : "brown", "age" : "35"}
我用
$.post('process.aspx', json)
如何在process.aspx代码中反序列化json?
另外,我如何在我的情况下使用$ .postJSON()?
您可以使用.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); } }
NewtonSoft库是一个不错的选择。
您可以使用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); } } }