2009-07-20 8 views
0

Comment puis-je dé-sérialiser un objet json envoyé depuis javascript (en utilisant jquery.ajax) vers une page .aspx (pas un service web)?deserialise json côté serveur

par exemple. si j'ai l'objet json suivant;

var json = {"name" : "michael", "surname" : "brown", "age" : "35"} 

et j'utilise

$.post('process.aspx', json) 

comment puis-je désérialiser le JSON dans le code process.aspx derrière?

également, comment puis-je utiliser le $ .postJSON() dans mon cas?

Répondre

3

Vous pouvez utiliser le DataContractJsonSerializer intégré dans .Net 3.5, ou il y a une grande open source bibliothèque JSON que nous utilisons: http://jayrock.berlios.de/

Pour utiliser le DataContractJsonSerializer, votre code pourrait ressembler à ceci:

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

Vous pouvez utiliser 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); 
     } 
    } 
}