我正在使用Newtonsoft JSON库来反序列化来自web服务器的JSON响应。不,奇怪的是,我总是收到相同的数据,尽管数据与我检查的不同。
代码:
public Questions()
{
InitializeComponent();
this.DataContext = App.ViewModel;
WebClient wc = new WebClient();
Uri request = new Uri("http://www.thestringsproject.com/q/json");
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(CompletedDownload);
wc.DownloadStringAsync(request);
}
private void CompletedDownload(object sender, DownloadStringCompletedEventArgs e)
{
var container = JsonConvert.DeserializeObject(e.Result) as JObject;
List<JObject> result = container["cs"].Children()
.Cast<JObject>()
.ToList();
foreach (JObject p in result)
{
var q = p["question"];
questions.Add(q.ToString());
}
App.ViewModel.Items.Clear();
if (questions.Count > 0)
{
App.ViewModel.Items.Clear();
for (int i = 0; i < questions.Count; i++)
{
App.ViewModel.Items.Add(new ItemViewModel { LineOne = questions[i], LineThree=(i+1).ToString() });
}
}
}
我想到了两件事。第一个是WebClient
缓存数据,所以尝试在url中添加一些随机参数,比如"http://www.thestringsproject.com/q/json?x="+DateTime.Now.Ticks
,并检查从服务器返回的数据。
第二种方法是,您可以取回新数据,但App.ViewModel
。Items是一个简单的List<T>
,而不是ObservableCollection<T>
,因此数据只是UI不会更新。