【问题标题】:Read JSON File Xamarin Forms Weird Errors读取 JSON 文件 Xamarin 形成奇怪的错误
【发布时间】:2019-02-01 22:55:51
【问题描述】:

我刚开始使用 Xamarin Forms 编写代码,并且正在使用 Xamarin Forms 编写 Android 应用程序。

我正在尝试读取一个json 文件,但是当我尝试读取它时,它说它找不到该文件。

我尝试将文件放在项目的许多不同文件夹中。

我将 json 文件的构建操作放入 Embedded Ressource,但这仍然不起作用。我真的不知道将文件放在哪里以及如何导入它。我用 StreamReader 尝试了很多东西,还有很多其他东西,比如来自 newtonsoft json 的 JSONCovert。

private void LoadJson()
{
    string dispo = File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Resources), "dispo.json")); ;

    var assembly = typeof(App).GetTypeInfo().Assembly;
    var day = JsonConvert.DeserializeObject<Day>(dispo);

    ls.Add(day.Lundi);
    ls.Add(day.Mardi);
    ls.Add(day.Mercredi);
    ls.Add(day.Jeudi);
    ls.Add(day.Vendredi);
}

public class Day
{
    public string Lundi { get; set; }
    public string Mardi { get; set; }
    public string Mercredi { get; set; }
    public string Jeudi { get; set; }
    public string Vendredi { get; set; }
}

我得到的结果:

Unhandled Exception:
System.IO.FileNotFoundException: Could not find file "/dispo.json"

我应该把文件放在哪里?

【问题讨论】:

  • 您是否一直发送文件进行复制?
  • 我不确定我是否理解您所说的关于始终复制的内容?
  • 您在解决方案资源管理器中看到文件了吗?
  • 是的,它就在那里。
  • 点进去把属性调出来,改成copyalways,不记得是哪个设置了,不过应该不难找

标签: c# android json xamarin mobile


【解决方案1】:

嵌入的资源内容类型实际上不是应用程序中的“文件”,而是字节位于程序集本身内部。有关如何提取嵌入式资源的信息,请参阅 working with files docssample

var assembly = IntrospectionExtensions.GetTypeInfo(typeof(LoadResourceText)).Assembly;
Stream stream = assembly.GetManifestResourceStream(
   "YourNamespace.dispo.json");

string text = "";
using (var reader = new StreamReader (stream))
{
    text = reader.ReadToEnd ();
}

参考this code snippet,它将所有嵌入的资源写入应用程序输出调试窗口,它将帮助您查看文件是否正确嵌入。

或者

Android 项目系统实际上并不允许您将“文件”放在任何地方并在应用程序运行时加载它。相反,您必须将其添加到 /Resources/raw/dispo.json 中,然后找到如下路径:

var filePath = 
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), 
    "dispo.json")

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2023-03-14
    • 1970-01-01
    • 2022-11-07
    • 2016-05-28
    相关资源
    最近更新 更多