微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Forms使用httpclient下载json文件:ReadAsStringAsync或DownloadFileAsync?

如何解决Xamarin Forms使用httpclient下载json文件:ReadAsStringAsync或DownloadFileAsync?

我在Xamarin Forms Android / Ios应用程序中使用json文件填充listview,并且喜欢在启动时下载json文件

使用ReadAsstringAsync或DownloadFileAsync更好吗?

DownloadFileAsync是否仅适用于二进制文件?可能是最快的,然后读字符串并将其写入:)

谢谢

解决方法

通常,您要下载JSON内容并直接反序列化到模型。例如:

private sealed class YourModel
{
    public int SomeProperty { get; set; }
    public string SomeOtherProperty { get; set; }
}

using (var req = await _httpClient.GetAsync("https://www.example.com/api/endpoint"))
{
    req.EnsureSuccessStatusCode();
    using (var s = await req.Content.ReadAsStreamAsync())
    using (var sr = new StreamReader(s))
    using (var jtr = new JsonTextReader(sr))
    {
        var obj = new JsonSerializer().Deserialize<YourModel>();
    }
}

可以使用一些扩展名来简化此操作,例如,如果您导入了System.Net.Http.HttpClientExtensions nuget包,则可以这样做:

using (var req = await _httpClient.GetAsync("https://www.example.com/api/endpoint"))
{
    EnsureSuccessStatusCode();
    var obj = await req.Content.ReadAsAsync<YourModel>();
}

如果您不想使用模型,则通常将JSON内容下载为string

,

如果要直接将数据作为文件保存到磁盘,请使用DownloadFileAsync()-这是比ReadAsStringAsync()更简单,更快捷的解决方案,因为DownloadFileAsync()将使用流在其中写入内容文件,而不是先将网络数据作为字符串读取并使用StreamWriter将其写入文件流。

String永远不会提高性能。即使您想直接通过代码解析从网络下载的JSON内容而不是保存在磁盘上,也可以使用ReadAsStreamAsync()读取响应,然后使用JsonSerializer进行流式反序列化JSON对象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。