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" }