2012-02-27 228 views
2

我想deserealize JSON字符串是如下的值反序列化

{"data":[ 
{"description":"xxxxxx","created_time":1330356685}, 
    {"description":"zzzz","created_time":1329817903} 
]} 

我班如下:

public class NewFriends 
{ 
    public Data[] data { get; set; } 

    public class Data 
    { 
     string description { get; set; } 
     int created_time { get; set; } 
    } 
} 

,但是當我deserealizing值我在nFrnds

NewFriends nFrnds = serializer.Deserialize<NewFriends>(newFriends); 

的數組索引獲得空值請幫幫忙!

+2

@CloseVoter,這不是太本地化。像這樣的問題是StackOverflow存在的原因。 – 2012-02-27 17:27:04

+0

你在使用什麼序列化器。有2個內置於.Net,我假設你正在嘗試使用其中之一? – Josh 2012-02-27 17:31:52

回答

2

此代碼工作正常,我:

string s = "{\"data\":[{\"description\":\"xxxxxx\",\"created_time\":1330356685}, {\"description\":\"zzzz\",\"created_time\":1329817903}]}"; 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
NewFriends nFrnds = jss.Deserialize(s, typeof(NewFriends)) as NewFriends; 
MessageBox.Show(nFrnds.data.Length.ToString()); 
6

我想建議你看看使用Json.Net。它將使反序列化過程變得輕而易舉。

PM>安裝,包裝Newtonsoft.Json

public class NewFriends 
{ 
    public List<Data> data { get; set; } 

} 

public class Data 
{ 
    string description { get; set; } 
    int created_time { get; set; } 
} 
var jsonObj = @"{"data":[ 
{"description":"xxxxxx","created_time":1330356685}, 
    {"description":"zzzz","created_time":1329817903} 
]}" 


NewFriends newFriends = JsonConvert.DeserializeObject<NewFriends>(jsonObj); 
+0

我沒有得到他*寫*解串器的印象,只是他使用的那個沒有正常工作。我可能是錯的。 – Josh 2012-02-27 17:31:12

+0

在我看來,他似乎在試圖爲JSON對象構建一個POCO並掛斷電話。也許沿着「DataContract」路徑走......不完全確定。 – 2012-02-27 17:33:44

2

嘗試使用List,而不是一個Array

public class NewFriends 
{ 
    public List<Data> data { get; set; } 

} 

public class Data 
{ 
    string description { get; set; } 
    int created_time { get; set; } 
} 
+2

+1我不喜歡數組,當我可以使用列表<> – Zote 2012-02-27 17:34:35

+0

我不喜歡列表<>當我可以使用數組 – RBaarda 2013-10-03 08:20:29