0
Я пытаюсь десериализовать строку json, содержащую несколько имен устройств и IP-адреса. Код, который я пытаюсь выполнить, приведен ниже.WPF и Json Deserializer с несколькими элементами
var rawData = "[{\"Name\" : \"xbox\", \"IP\" : \"192.100.14.160\"} ,{\"Name\" : \"ps3\", \"IP\" : \"192.100.14.131\"}]";
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(deviceCollection));
MemoryStream sr = new MemoryStream(Encoding.Unicode.GetBytes(rawData));
ControllerCollection pat = serializer.ReadObject(sr) as ControllerCollection;
sr.Close();
[DataContract]
public class ControllerCollection
{
[DataMember]
public List<Controller> Controllers { get; set; }
}
[DataContract]
public class Controller
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string IP { get; set; }
}
Когда я это делаю, я получаю нулевое значение для ControllerCollection. Любая помощь приветствуется. Благодаря!
Используйте JavaScriptSerializer(). Deserialize(), поскольку он проще и не нужно отмечать DataContract. Он находится в System.Web.Extensions в сборе. Вот код, который работает. Список controllers = new JavaScriptSerializer(). Deserialize <Список > (rawData); –
Jatin
@Nirvan DataContractJsonSerializer не нуждается в [DataContract]. Его проблема была в JSON неверна. – cheedep
@Nirvan JSON в вопросе не является обозначением JSON для объекта типа ControllerCollection. См. Мой ответ за правильную структуру. – cheedep