Вы десериализуете неправильный тип (IList вместо List of ClientClass - исходное сообщение имело typeof (IList) , однако Крис исправил это как часть своих изменений форматирования кода). Вы должны делать:
public static List<Clientclass> Deserialize(string json)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(typeof(List<Clientclass>));
return (List<Clientclass>)serializer.ReadObject(ms);
}
}
Кроме того, ваш JSON включает в себя то, что вы не декодируете. Если вы хотите использовать вышеуказанный метод, ваш JSON должен быть:
[ {"Lead": "", "Industry": "Other Commercial", "ID": "908", "Name": "3PAR Ltd." }, {"Lead": "Ebeling, Kevin R.", "Industry": "Retail", "ID": "1", "Name": "7-Eleven" } ]
Чтобы декодировать строку из исходного сообщения, вам понадобится содержащий класс и определить атрибуты DataMember для обработки имен:
public class ClassA
{
[DataMember(Name = "rs:data")]
public ClassB Data { get; set; }
}
public class ClassB
{
[DataMember(Name="z:row")]
public List<Clientclass> Row { get; set; }
}
Затем десериализовать ClassA:
public static ClassA Deserialize(string json)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(typeof(ClassA));
return (ClassA)serializer.ReadObject(ms);
}
}