2013-02-19 24 views
3

我JSON結構是這樣的:如何使用DataContractJsonSerializer for Json?

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

我想在電子郵件 價值所以我寫兩個類:

[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中獲得其他值,但對於電子郵件,我什麼也得不到。 爲什麼,我應該怎麼寫班? 請幫幫我!

+0

你是什麼意思,你什麼都得不到? 'info.emails'沒有任何價值嗎?你確定你正在閱讀正確的文件嗎? – 2013-02-19 14:33:02

+0

是的,我敢肯定,問題是我需要將電子郵件中的屬性更改爲小寫! 我不知道爲什麼...但似乎我改變他們爲小寫,他們可以工作! – EthenHY 2013-02-20 02:54:02

回答

2

我發現問題是我需要將電子郵件中的所有屬性更改爲小寫... 我不知道爲什麼..但它工作。

+5

這是因爲你這樣做:'[DataMember(Name =「emails」)] public Emails emails {get;組; }'。如果沒有指定Name參數,它將默認接受'Emails'。 – cwc 2014-02-21 21:20:06

1

您的對象屬性的大小寫必須與JSON中的大小寫匹配。 (見下面的粗體)。

public Emails **emails** { get; set; } 

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