【发布时间】:2021-08-06 06:29:43
【问题描述】:
我创建了一个应用程序,它应该在列表视图中显示我在根目录中拥有的 JSON 数据集。我已经正确绑定了所有内容。用户登录后,它应该被重定向到我应该显示列表的主页,但它会中断。我尝试了调试器,据我了解,JSON 文件未组装到 Stream,这是创建的代码:
命名空间 Mixed2.Views { [XamlCompilation(XamlCompilationOptions.Compile)] 公共部分类 HomePage : ContentPage { 公共主页() { 初始化组件(); GetJsonData(); }
void GetJsonData()
{
string jsonFileName = "region.json";
RegionList ObjContactList = new RegionList();
var assembly = typeof(HomePage).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<RegionList>(jsonString);
}
//Binding listview with json string
listviewRegions.ItemsSource = ObjContactList.regionData;
}
private void RegionTapped(object sender, ItemTappedEventArgs e)
{
// cast the tapped item to the correct type
var region = (RegionData)e.Item;
Navigation.PushAsync(new DetailPage(region));
}
}
}
应用程序中断的部分是它进入时:
using (var reader = new System.IO.StreamReader(stream))
我收到的错误消息:
System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation.'
有人知道吗?提前致谢
【问题讨论】:
-
TargetInvocationException 的 InnerException 是什么?
stream是否为空?您是否已验证该文件具有正确的内容类型并且您使用了正确的命名约定? -
@Jason 是的流为空
-
好的,然后找出原因。请参阅我上面提出的其他问题。这是基本调试
-
我对此很陌生,对我来说有点困难。你建议我如何进行?有没有办法私下将项目发送给您(如果您可以的话)以了解我的问题?
-
如果你把它贴在某个地方,我会快速浏览一下。但通常,从程序集中加载资源是有据可查的。这是一个基本的 C# 操作,与 Xamarin 无关。我建议搜索与同一问题有关的其他问题,看看它们是如何解决的。
标签: json exception xamarin.forms stream break