2013-12-10 3 views
0

У меня есть веб-служба PHP, которая предоставляет объект JSON. В моем Windows Phone 8 Application, я потребляю службу, выполнив следующие действия:JSON Deserialize in WP8

public void GetSigns() 
{ 
    var webClient = new WebClient(); 
    var uri = new Uri("someURL"); 
    webClient.OpenReadCompleted += GetSigns_Completed; 
    webClient.OpenReadAsync(uri); 
} 

private void GetSigns_Completed(object sender, OpenReadCompletedEventArgs e) 
{ 
    using (var sr = new StreamReader(e.Result)) 
    { 
     var data = sr.ReadToEnd(); 
     var result = JsonConvert.DeserializeObject<List<GetSignsResponse>>(data); 
    } 
} 

data объект в использовании заявления правильно заполнены строки JSON. Однако объект result генерирует исключение (я удалил try и catch, чтобы сделать код более удобочитаемым).

Это то, что мой GetSignsResponse объект выглядит следующим образом:

public class GetSignsResponse 
{ 
    public int ID { get; set; } 
    public string Online { get; set; } 
    public string Location { get; set; } 
    public DateTime Maxupdated { get; set; } 
    public string Line1 { get; set; } 
    public string Line2 { get; set; } 
    public string Line3 { get; set; } 
    public string Line4 { get; set; } 
} 

JSON возвращает следующее:

Веб-служба возвращает коллекцию GetSignsResponse объекта.

Любая идея, почему объект result в методе обратного вызова GetSigns_Completed работает неправильно? У меня отсутствует объект GetSignsResponse?

Ошибка, который я получаю это, что он не может преобразовать JSON в к List из GetSignsResponse.

Update Веб-служба JSON выглядит следующим образом:

{ 
sign: { 
id: "11", 
online: "1", 
location: "abc", 
maxupdated: "2013-11-19 16:59:05", 
line1: " abc ", 
line2: " abc ", 
line3: " abc ", 
line4: " " 
} 
}, 
{ 
sign: { 
id: "7", 
online: "1", 
location: "abc", 
maxupdated: "2013-11-19 16:58:03", 
line1: " abc ", 
line2: " abc ", 
line3: " abc ", 
line4: " " 
} 
}, 

data объект в GetSigns_Completed выглядит следующим образом:

"\ т {\" знаки \ ": [{ \ "знак \": {\ "идентификатор \": \ "1 \", \ "онлайн \": \ "1 \", \ "место \": \ "аЬс \", \ "maxupdated \": \ "2013-10-05 06:29:02 \", \ "line1 \": \ "\", \ "line2 \": \ "\", \ "line3 \": \ "\", \ "line4 \ ": \" \ "}}, {\" sign \ ": {\" id \ ": \" 2 \ ", \" онлайн \ ": \" 1 \ ", \" location \ ": \" abc \ ", \" maxupdated \ ": \" 2013-10-05 18:21:01 \ ", \" line1 \ ": \" abc \ ", \" line2 \ ": \ "abc \", \ "line3 \": \ "abc \", \ "line4 \": \ "\"}}, {\ "sign \" "}}]}"

+2

А где же json? –

+0

Hi L.B. - Я обновил оригинальный пост. Нижняя часть содержит только два объекта в строке JSON. – Subby

+0

Subby, как вы ожидаете, что мы дадим правильный ответ, не зная * правильный * json (а не как вы опубликовали). –

ответ

0

Путь в который был сформирован JSON, неверно в PHP. У меня был:

$signs[] = array($sign); 

, который должен был быть:

$signs[] = $sign; 

Последнее верно, как он помещен объект знака в массиве знаков, а не массив знаков в массиве вывески.