【问题标题】:How to read a local json file and display如何读取本地json文件并显示
【发布时间】:2017-11-18 17:06:30
【问题描述】:

新手在这里,我在 Xamarin Forms 上找不到任何示例读取本地 json 文件并显示它。我需要做一个本地测试来读取本地 Json 文件。

1) 我在哪里保存 json 文件以供阅读?在 Android 和 iOS 项目中还是仅在 PCL 项目中?

2) 如何读取文件?

这里是代码,但它不完整,因为我不知道如何读取文件。

using (var reader = new System.IO.StreamReader(stream))
{


var json = reader.ReadToEnd();

var rootobject = JsonConvert.DeserializeObject<Rootobject>(json);

whateverArray  = rootobject.Whatever;

}

代码错过了所需的路径和其他。

【问题讨论】:

  • developer.xamarin.com/guides/xamarin-forms/… 确实提供了很好的概述。
  • 我之前读过它以及样本。它不是普通的 Xaml 和 xaml.cs 应用程序。我是新手,需要一些帮助才能了解它是如何工作的。 var assembly = typeof(LoadResourceText).GetTypeInfo().Assembly;流流 = assembly.GetManifestResourceStream("WorkingWithFiles.PCLTextResource.txt");这适用于 Andorid 和 iOS 吗??
  • 这取决于文件的构建操作是什么。如果它是嵌入式资源,您可以像这样读取它({assemblyName}.{foldersSeparatedWithDots}.{fileName} 是我认为读取它的字符串的结构)
  • 本地文件是嵌入资源。 Mono.Droid 和 Mono.Touch 有自己的文件系统。现在,Xamarin Forms 再次与众不同。因此,我需要依赖 XF 样本来跟随。
  • 在这种情况下,上面链接中的“加载嵌入为资源的文件”正是您所需要的。你可以下载他们的示例代码(右上角的链接)并摆弄它。

标签: xamarin.forms


【解决方案1】:

您可以直接在 PCL 中添加 JSON 文件。然后将 build action 更改为 Embedded Resource

现在您可以通过以下方式读取 Json 数据:

    var assembly = typeof("<ContentPageName>").GetTypeInfo().Assembly;
        Stream stream = assembly.GetManifestResourceStream("Your_File.json");

    using (var reader = new System.IO.StreamReader(stream))
        {

            var json = reader.ReadToEnd();
            var data= JsonConvert.DeserializeObject<Model>(json);
        }

【讨论】:

  • 这个 LoadResourceText 是什么?我没有这个。
  • 这是你的 contentPage 名称,想法是先获取程序集信息
  • 流流 = assembly.GetManifestResourceStream("Your_File.json"); - 此行为我返回 null。知道为什么吗?
  • 我发现了错误。我们必须给出 GetManifestResourceStream() 中的路径,而不仅仅是文件名。
  • 我添加了以下内容:assembly.GetManifestResourceStream($"{assembly.GetName().Name}.Your_File.json");获得正确的文件名。该文件直接位于项目下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多