我有一个提供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 \“”}}]} “
答案 0 :(得分:0)
在PHP中形成JSON的方式不正确。我有:
$signs[] = array($sign);
需要:
$signs[] = $sign;
后者是正确的,因为它在符号数组中放置了一个符号对象,而不是符号'数组中的符号数组。