Comment utiliser DataContractJsonSerializer for Json?

J’ai une structure JSON comme ceci:

{ "id":"12345", "first_name": "dino", "last_name": "he", "emails": { "preferred": "1", "personal": "2", "business": "3", "other": "4" } } 

Je veux obtenir la valeur dans les e-mails. J’écris donc deux classes:

 [DataContract] public class UserInformation { [DataMember(Name = "id")] public ssortingng ID { get; set; } [DataMember(Name = "emails")] public Emails emails { get; set; } [DataMember(Name = "last_name")] public ssortingng Name { get; set; } } [DataContract] public class Emails { [DataMember(Name = "preferred")] public ssortingng Preferred { get; set; } [DataMember(Name = "personal")] public ssortingng Account { get; set; } [DataMember(Name = "business")] public ssortingng Personal { get; set; } [DataMember(Name = "other")] public ssortingng Business { get; set; } } 

Et j’écris du code comme ceci:

 StreamReader stream = new StreamReader(@"C:\Visual Studio 2012\Projects\ASP.net\WebApplication1\WebApplication2\TextFile1.txt"); ssortingng text = stream.ReadToEnd(); stream.Close(); byte[] byteArray = Encoding.UTF8.GetBytes(text); MemoryStream stream1 = new MemoryStream(byteArray); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInformation)); var info = serializer.ReadObject(stream1) as UserInformation; stream1.Close(); 

Pour info, je peux obtenir une autre valeur dans UserInformation, mais pour les emails je ne reçois rien. Pourquoi et comment devrais-je écrire la classe? Aidez-moi, s’il vous plaît!

J’ai trouvé que le problème est que je dois changer toutes mes propriétés dans les e-mails en minuscules … Je ne sais pas pourquoi … Mais cela a fonctionné.

La casse de votre propriété d’object doit correspondre à la casse dans le JSON. (Voir en gras ci-dessous).

 public Emails **emails** { get; set; } { "id":"12345", "first_name": "dino", "last_name": "he", "**emails**": { "preferred": "1", "personal": "2", "business": "3", "other": "4" }