c# - 使用 StreamReader 的 Xamarin.Forms 的 System.ArgumentNullException
问题描述
在我有以下代码从 json 文件中读取public ScenarioPage()
:ScenarioPage.cs
var assembly = typeof(ScenarioPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("firstSession.json");
using (StreamReader reader = new StreamReader(stream)) // System.ArgumentNullException
{
var json = reader.ReadToEnd();
List<SessionModel> data = JsonConvert.DeserializeObject<List<SessionModel>>(json);
foreach(SessionModel scenario in data)
{
label.Text = scenario.title;
break;
};
}
我得到一个 ArgumentNullExceptionstream
输入。firstSession.json
与 位于同一文件夹中ScenarioPage.cs
,并且它被设置为嵌入式资源。似乎 Visual Studio 没有识别出我的 json 文件在那里。这是一个错误吗?还是我的代码有问题?
解决方案
你把 Json 文件放在哪里,我把它放在 PCL 根目录下的 Json 文件中,如下图所示。
然后使用以下代码读取 Json 文件。
void GetJsonData()
{
string jsonFileName = "firstSession.json";
ContactList ObjContactList = new ContactList();
var assembly = typeof(MainPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{jsonFileName}");
using (var reader = new System.IO.StreamReader(stream))
{
var jsonString = reader.ReadToEnd();
//Converting JSON Array Objects into generic list
ObjContactList = JsonConvert.DeserializeObject<ContactList>(jsonString);
}
EmployeeView.ItemsSource = ObjContactList.contacts;
}
这里正在运行 GIF。
我更新我的演示给你。你可以测试它 https://github.com/851265601/Xamarin.Android_ListviewSelect/blob/master/PlayMusicInBack.zip
推荐阅读
- python - 在文件练习中苦苦挣扎
- java - @OneToMany 两个表之间的关系,每个表都有复合主键
- php - 教义中的外键(Symfony)。如何将新孩子绑定到已经存在的父母?
- mysql - python mysql打印非空值
- vba - VBA 停止 OnTime 函数
- session - 松树脚本 - 自定义会话突破问题
- sql - groupby 在 oracle sql 中检查每个日期
- flutter - 如何将英雄小部件动画到另一个页面中轮播的第一个元素?
- ios - 如何处理:App Store Connect Operation Error (ERROR ITMS-90744: "Unsupported Xcode or SDK Version.)
- r - 在完全按照说明进行操作时创建自己的包时出错