public class SocialFriends
{
public string id { get; set; }
public string name { get; set; }
}
这是我的班级。
List<SocialFriends> oList2 = ser.Deserialize<List<SocialFriends>>(response.Content);
我得到的数据是这样的。但它返回0个数据:S
数据在这里
{"data":[{"name":"George","id":"511222445"},{"name":"Mayk","id":"517247768"}]}
我无法解释这个问题?谁能说,我的错在哪里?
答案 0 :(得分:1)
创建一个类
class Data
{
public SocialFriends[] data { get; set; }
}
并将您的代码更改为:
Data oList2 = ser.Deserialize<Data>(response.Content);
答案 1 :(得分: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);
答案 2 :(得分: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;