2011-02-15 47 views
0
public class SocialFriends 
    { 
     public string id { get; set; } 
     public string name { get; set; } 
    } 

這是我的班級。如何使用Javascript序列化器反序列化? (ASP.net)

List<SocialFriends> oList2 = ser.Deserialize<List<SocialFriends>>(response.Content); 

我得到的數據是這樣的。但它返回0數據:■

數據是這裏

{"data":[{"name":"George","id":"511222445"},{"name":"Mayk","id":"517247768"}]} 

我無法解釋這個問題?誰能說,我的錯在哪裏?

回答

0

您的JSON包裹在data屬性中。您必須從該data屬性中獲取JSON字符串。我不知道你使用的JSON序列,但根據您提供什麼,最簡單的方法可能只是建立一箇中間DataHolder類:

public class DataHolder 
{ 
    public string Data { get; set; } 
} 

然後反序列化這樣的:

var dataHolder = ser.Deserialize<DataHolder>(response.Content); 
var oList2 = ser.Deserialize<List<SocialFriends>>(dataHolder.Data); 

如果您使用的是強大的JSON序列像Json.NET,你甚至可以跳過中間反序列化,改變你的DataHolder類型爲正確的類型:

public class DataHolder 
{ 
    public List<SocialFriends> SocialFriends { get; set; } 
} 

然後用這個代碼來獲取數據:

var dataHolder = ser.Deserialize<DataHolder>(response.Content); 
var oList2 = dataHolder.SocialFriends; 
+0

性質是不區分大小寫?我一直認爲它們區分大小寫...... – 2011-02-15 19:40:39

+0

這完全取決於您的JSON序列化程序。我知道Json.NET不關心。 – 2011-02-15 19:44:30

1

創建一個類

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

和你的代碼更改爲:

Data oList2 = ser.Deserialize<Data>(response.Content); 
1

此代碼的工作。

public class SocialFriendsData 
{ 
    public List<SocialFriends> Data { get; set; } 
} 

public class SocialFriends 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

反序列化:

JavaScriptSerializer ser = new JavaScriptSerializer(); 
string response = "{\"data\":[{\"name\":\"George\",\"id\":\"511222445\"},{\"name\":\"Mayk\",\"id\":\"517247768\"}]}"; 
SocialFriendsData oList2 = ser.Deserialize<SocialFriendsData>(response); 
相關問題