C# 在MVVM Windows Phone 8中反序列化JSON数据
我想在我的WindowsPhone8应用程序中使用Json.net反序列化数据,但我没有主意了。我以前做过这项工作,但现在数据(json)已经更改,因此代码也必须更改 我用它来下载我的数据:C# 在MVVM Windows Phone 8中反序列化JSON数据,c#,json,mvvm,windows-phone-8,C#,Json,Mvvm,Windows Phone 8,我想在我的WindowsPhone8应用程序中使用Json.net反序列化数据,但我没有主意了。我以前做过这项工作,但现在数据(json)已经更改,因此代码也必须更改 我用它来下载我的数据: var grad = IsolatedStorageSettings.ApplicationSettings["grad"] as string; UriBuilder fullUri = new UriBuilder("http://openweathermap.org/data
var grad = IsolatedStorageSettings.ApplicationSettings["grad"] as string;
UriBuilder fullUri = new UriBuilder("http://openweathermap.org/data/2.5/weather?");
fullUri.Query = "q=" + grad + "&units=metric";
WebClient client = new WebClient();
client.DownloadStringAsync(fullUri.Uri);
client.DownloadStringCompleted += client_DownloadStringCompletedtrenutno;
这是在my MainViewModel.cs的Methodos中设置的。下载之后,我有一个事件处理程序
void client_DownloadStringCompletedtrenutno(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
RootObject4 json = JsonConvert.DeserializeObject<RootObject4>(e.Result);
Trenutno = new ObservableCollection<Main4>(json.main4);
Sada = Trenutno[0];
}
else
{
//display an error
}
}
observedcollection
IEnumerable
作为输入。但是json.main4
是main4
类型的字段
在客户端内\u下载StringCompletedTrenutNo方法:
Trenutno = json.main4;
并在代码中更新属性:
private Main4 _trenutno;
public Main4 Trenutno
{
get
{
return _trenutno;
}
set
{
if (_trenutno == value)
{
return;
}
RaisePropertyChanging(TrenutnoPropertyName);
_trenutno = value;
RaisePropertyChanged(TrenutnoPropertyName);
}
}
我现在添加了一些代码,如何使用可观察的集合来获取数据,如何修改它以使其立即工作?已更新。但我建议你花点时间去理解:为什么你不需要一个可观察的集合呢?不,我不需要一个可观察的集合,但除此之外怎么做呢?:)我应该用什么来代替?我对所有更好的东西都持开放态度。更好的是只使用类本身。现在它可以工作了:)非常感谢。我有一个小问题,如果我想从Sys4、Weather4等收集数据,我应该使用相同的方法吗?!像你给我展示的那样做一个财产,然后用同样的方法?
Trenutno = json.main4;
private Main4 _trenutno;
public Main4 Trenutno
{
get
{
return _trenutno;
}
set
{
if (_trenutno == value)
{
return;
}
RaisePropertyChanging(TrenutnoPropertyName);
_trenutno = value;
RaisePropertyChanged(TrenutnoPropertyName);
}
}