JSON在WP8中反序列化

时间:2013-12-10 21:39:37

标签: c# json web-services

我有一个提供PHP对象的JSON Web服务。在我的Windows Phone 8应用程序中,我通过执行以下操作来使用该服务:

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);
    }
}

using语句中的data对象使用JSON字符串正确填充。但是,结果对象抛出异常(我删除了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返回以下内容:

Web Service返回GetSignsResponse对象的集合。

知道为什么result回调方法中的GetSigns_Completed对象无法正常工作?我的GetSignsResponse对象遗失了什么?

错误我得到的是它无法将JSON转换为List GetSignsResponse

更新 Web服务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对象如下所示:

“\吨{\” 标志\ “:[{\” 符号\ “:{\” ID \ “:\” 1 \ “\ ”在线\“:\ ”1 \“ \” 位置\ “:\”abc \“,\”maxupdated \“:\”2013-10-05 06:29:02 \“,\”line1 \“:\”\“,\”line2 \“:\”\“ ,“line3 \”:\“\”,\“line4 \”:\“\”}},{\“sign \”:{\“id \”:\“2 \”,\“online \” :\“1 \”,\“location \”:\“abc \”,\“maxupdated \”:\“2013-10-05 18:21:01 \”,\“line1 \”:\“abc \ “,”line2 \“:\”abc \“,\”line3 \“:\”abc \“,\”line4 \“:\”\“}},{\”sign \“”}}]} “

1 个答案:

答案 0 :(得分:0)

在PHP中形成JSON的方式不正确。我有:

$signs[] = array($sign);

需要:

$signs[] = $sign;

后者是正确的,因为它在符号数组中放置了一个符号对象,而不是符号'数组中的符号数组。