如何解析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);
        }

如何解析JSON在Windows Store / Windows Phone应用程序

您可以使用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引用异常