2012-02-27 142 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