【问题标题】:Getting data from a .json URL [Xamarin]从 .json URL 获取数据 [Xamarin]
【发布时间】:2019-09-19 06:50:31
【问题描述】:

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

这是网址:https://www.mrniato.com/mysql_to_json.php 我想抢所有的“固件”。

我需要关于使用什么代码在 ListView 上显示它们的帮助。

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

感谢您的回答。

【问题讨论】:

  • I need help on what code 显示您的尝试,告诉我们究竟是什么问题,我们会尽力提供帮助。
  • 我不知道该怎么办,实际上我已经删除了所有不起作用的代码。目标是从 json 中获取数据并将其显示到 Xamarin 中的列表视图中而不会出现错误
  • 那么你必须先尝试一些东西,然后如果有任何问题 - 问一个问题。如果您不知道从哪里开始 - 从搜索如何在 XAMARIN 中从 Internet 获取数据开始
  • 我同意@VladyslavMatviienko。虽然我可以推动你朝着正确的方向前进。看看HttpClient 类。您需要它来从 URL 获取数据。成功检索数据后,您需要使用数据填充 ListView。你可以在这里阅读更多关于这样做的信息:Populating a Xamarin.Android ListView With Data。自己尝试一下,如果您无法使其工作,请发布您尝试过的代码。

标签: c# android json xamarin


【解决方案1】:

您可以使用 HttpClient 来请求您的数据,这是一个简单的 sn-p 用于来自服务器的Getrequest:

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; }
    }
}

您可以参考Consuming REST Services With HttpClient

最后你可以通过上面的 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 ;

【讨论】:

猜你喜欢
  • 2019-01-19
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多