首页 > 解决方案 > 从 .json URL 获取数据 [Xamarin]

问题描述

我目前正在开发一个应用程序来从 URL 中获取 .json 数据并将其显示给 Xamarin 上的 ListView。

这是 URL:https ://www.mrniato.com/mysql_to_json.php 我想获取所有的“固件”。

我需要有关使用哪些代码在 ListView 上显示它们的帮助。

我已经尝试了一些在互联网上找到的代码,但没有成功......

谢谢你的回答。

标签: c#androidjsonxamarin

解决方案


您可以使用HttpClient来请求您的数据,这是Get来自服务器的请求的简单片段:

using (var client = new HttpClient()){ 
   HttpResponseMessage response = await client.GetAsync(requestUrl);
        if (response.StatusCode == System.Net.HttpStatusCode.OK)
        {
                string content = await response.Content.ReadAsStringAsync();
                Grab grab = JsonConvert.DeserializeObject<Grab>(content);
                List<Grab.Date> dates = grab.PS4_Beta;
                foreach (var item in dates)
                {
                    Log.Error("Firmware", "==" + item.Firmware);
                }
        }

content是您的服务器返回给您的。您可以使用Newtonsoft.Json nuget 将其转换为您的自定义数据模型。

例如模型如下:

class Grab 
{
    [JsonProperty(PropertyName = "PS4_Beta")]
    public List<Data> PS4_Beta{ get; set; }

    public class Data
    {
        [JsonProperty(PropertyName = "Firmware")]
        public string Firmware { get; set; }
        [JsonProperty(PropertyName = "Size")]
        public string Size { get; set; }
        [JsonProperty(PropertyName = "MD5")]
        public string MD5 { get; set; }
    }
}

您可以参考使用 HttpClient 使用 REST 服务

最后,您可以通过上面的 JKL 链接使用 ListView 显示。

列表显示 :

   Grab grab = JsonConvert.DeserializeObject<Grab>(content);
   List<Grab.Date> dates = grab.PS4_Beta;
   ObservableCollection<string> FirmwareList = new ObservableCollection<string>();
   foreach (var item in dates)
       {
          FirmwareList.Add(item.Firmware);
       }
   listView.ItemSource = FirmwareList ;

推荐阅读