3

私はこのようなjson構造を持っています:

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

メールで値を取得したいので、2つのクラスを作成します。

[DataContract]
public class UserInformation
{
    [DataMember(Name = "id")]
    public string ID { get; set; }
    [DataMember(Name = "emails")]
    public Emails emails { get; set; }
    [DataMember(Name = "last_name")]
    public string Name { get; set; }

}
[DataContract]
public class Emails
{
    [DataMember(Name = "preferred")]
    public string Preferred { get; set; }


    [DataMember(Name = "personal")]
    public string Account { get; set; }

    [DataMember(Name = "business")]
    public string Personal { get; set; }

    [DataMember(Name = "other")]
    public string Business { get; set; }
}

そして私はこのようなコードを書きます:

StreamReader stream = new StreamReader(@"C:\Visual Studio 2012\Projects\ASP.net\WebApplication1\WebApplication2\TextFile1.txt");
string 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();

情報については、UserInformationで他の値を取得できますが、Eメールについては何も取得しません。なぜ、そしてどのようにクラスを書くべきですか?私を助けてください!

4

3 に答える 3

2

問題は、Eメールのすべてのプロパティを小文字に変更する必要があることです...理由はわかりませんが、うまくいきました。

于 2013-02-20T02:55:46.507 に答える