【问题标题】:Application stuck at File.OpenText()应用程序卡在 File.OpenText()
【发布时间】:2021-01-22 16:44:37
【问题描述】:

在 Xamarin Android 应用程序中,我使用此函数从存储的 json 文件中读取数据

public async Task<Caselist> readData()
        {
            var file = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "data_covid_dashboard.json");
            try
            {
                System.Console.Write("Reading data...");
                using (StreamReader fileContent = File.OpenText(file))
                {
                    JsonTextReader reader = new JsonTextReader(fileContent);
                    JObject jo = (JObject)JToken.ReadFrom(reader);
                    return jo.ToObject<Caselist>();
                }
                
            }
            catch (Exception)
            {

                throw;
            }
        } 

但是,应用程序似乎卡在using (StreamReader fileContent = File.OpenText(file))

所需文件约为 ~130MB。

您好,

乔纳森

【问题讨论】:

  • 如果您只是要转换为Caselist,那么您应该先跳过将其加载到JObject。试试var ser = new JsonSerializer(); return ser.Deserialize&lt;Caselist&gt;(reader);

标签: c# xamarin xamarin.android json.net


【解决方案1】:

搞定了。还要感谢 Brian。

public async Task<Caselist> readData()
    {
        var file = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "data_covid_dashboard.json");
        try
        {
            System.Console.Write("Reading data...");
            using (StreamReader fileContent = new StreamReader(file))
            {
                var json = fileContent.ReadToEnd();
                return JsonConvert.DeserializeObject<Caselist>(json);
            }
            
        }
        catch (Exception)
        {

            throw;
        }
    }

【讨论】:

  • 你好,有时间记得标记答案,它会帮助有同样问题的其他人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多