如何解析JSON在Windows Store / Windows Phone应用程序
本文关键字:Windows Phone 应用程序 Store JSON 何解析 | 更新日期: 2023-09-27 18:01:45
JSON后返回的url
[{"Id":21,"Name":"Pop","Description":"Pop Music"},{"Id":22,"Name":"Classical","Description":"Classical Music"},{"Id":23,"Name":"Rock","Description":"Rock Music"}]
,我想填充List<Genre> genreList;
class Genre
{
int Id{get;set;}
string Pop{get;Set;}
string Description {get;set;}
}
我写了下面的代码,但它根本不工作
public List<Genre> GetAllGenres()
{
var client = new HttpClient();
HttpResponseMessage response = client.G(new Uri("http://localhost/MusicAPI/api/Genre/GetAllGenres/"));
var jsonString = response.Content.ReadAsString();
List<Genre> list = await Newtonsoft.Json.JsonConvert.DeserializeObject<Genre[]>(jsonString);
return list;
}
请建议. .
这是Jagath给出的答案
public GenreItemViewer()
{
this.InitializeComponent();
GetResponse();
}
public async void GetResponse()
{
var postRequest = (HttpWebRequest)WebRequest.Create("http://localhost/MusicAPI/api/Genre/GetAllGenres/");
postRequest.Method = "GET";
postRequest.CookieContainer = new CookieContainer(); ;
HttpWebResponse postResponse = (HttpWebResponse)await postRequest.GetResponseAsync();
string response = String.Empty;
if (postResponse != null)
{
var postResponseStream = postResponse.GetResponseStream();
var postStreamReader = new StreamReader(postResponseStream);
response = await postStreamReader.ReadToEndAsync();
}
List<Genre> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Genre>>(response);
}
您可以使用Newtonsoft json nuget包,其中您可以使用一行代码进行解析。
List<Genre> genList = JsonConvert.DeserializeObject<List<Genre>>(e.Result);
,其中e.c rresult包含您的响应json。遵循这里
HttpClient client = new HttpClient();
string jsonstring = await client.GetStringAsync(webaddress);
var obj = JsonConvert.DeserializeObject<RootObject>(jsonString);
得到解析过的字符串后,您可以根据需要存储或使用它。
Try
List<Genre> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Genre>>(jsonString);
获取Http响应
var postRequest = (HttpWebRequest)WebRequest.Create(url);
postRequest.Method = "GET";
postRequest.CookieContainer = new CookieContainer();;
HttpWebResponse postResponse = (HttpWebResponse)await postRequest.GetResponseAsync();
if (postResponse != null)
{
var postResponseStream = postResponse.GetResponseStream();
var postStreamReader = new StreamReader(postResponseStream);
string response = await postStreamReader.ReadToEndAsync();
return response;// This is the response
}
这将获取类型类对象的列表
List<Genre> genreList= JsonConvert.DeserializeObject<List<Genre>>(jsonString.Result.ToString());
PS:当你给jsonString而不是jsonString. result . tostring ()作为反序列化的数据时,你将得到Null引用异常