2013-05-21 4 views
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. Любая помощь приветствуется. Благодаря!

+0

Используйте JavaScriptSerializer(). Deserialize(), поскольку он проще и не нужно отмечать DataContract. Он находится в System.Web.Extensions в сборе. Вот код, который работает. Список controllers = new JavaScriptSerializer(). Deserialize <Список > (rawData); – Jatin

+0

@Nirvan DataContractJsonSerializer не нуждается в [DataContract]. Его проблема была в JSON неверна. – cheedep

+0

@Nirvan JSON в вопросе не является обозначением JSON для объекта типа ControllerCollection. См. Мой ответ за правильную структуру. – cheedep

ответ

0
var rawData = "{\"Controllers\": [{\"Name\" : \"xbox\", \"IP\" : \"192.100.14.160\"} ,{\"Name\" : \"ps3\", \"IP\" : \"192.100.14.131\"}]}"; 
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ControllerCollection), new Type[] {typeof(Controller)}); 
MemoryStream sr = new MemoryStream(Encoding.Unicode.GetBytes(rawData)); 
//sr.Seek(0, SeekOrigin.Begin); 
ControllerCollection pat = (ControllerCollection)serializer.ReadObject(sr); 
sr.Close(); 

Ваша строка Json находится в неправильном формате.

Смежные вопросы