我是C#Store应用的初学者,我有一个JSON文件,我希望在我的屏幕上看到它。问题是我的方法根本不会检索任何数据。 第二个问题,为了在屏幕上显示数据,它是否必须是可观察的集合?
public class DataConnection
{
public DataConnection()
{
}
public async Task getDataFromJson()
{
Uri dataUri = new Uri("ms-appx:///DataModel/ProductData.json");
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
string jsonText = await FileIO.ReadTextAsync(file);
JsonObject jsonObject = JsonObject.Parse(jsonText);
JsonArray jsonArray = jsonObject["Groups"].GetArray();
foreach (JsonValue groupValue in jsonArray)
{
List<ProductGroup> groupList = new List<ProductGroup>();
JsonObject groupObject = groupValue.GetObject();
ProductGroup group = new ProductGroup(groupObject["UniqueId"].GetString(),
groupObject["Title"].GetString(),
groupObject["Subtitle"].GetString(),
groupObject["ImagePath"].GetString(),
groupObject["Description"].GetString());
foreach (JsonValue itemValue in groupObject["Items"].GetArray())
{
JsonObject itemObject = itemValue.GetObject();
group.Items.Add(new ProductItem(itemObject["UniqueId"].GetString(),
itemObject["Title"].GetString(),
itemObject["Artikelnummer"].GetString(),
itemObject["VerkoopprijsInBtw"].GetString(),
itemObject["VerkoopprijsExBtw"].GetString(),
itemObject["Inkoopprijs"].GetString(),
itemObject["ActualStock"].GetString(),
itemObject["Marge"].GetString(),
itemObject["Eenheid"].GetString(),
itemObject["ImagePath"].GetString(),
itemObject["Description"].GetString()));
}
groupList.Add(group);
}
}
}
问题似乎在于: Uri dataUri = new Uri(&#34; ms-appx:///DataModel/ProductData.json");
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
调试器只是结束方法并继续进行任何数据的检索。 json文件中的数据经过测试和更正,因此不是问题。 我从标准的Gridapp复制了这个方法,所以代码应该没问题,我知道问题(可能)发生在StorageFile中。我错过了什么吗?
任何提示都会很好!
提前致谢。
答案 0 :(得分:0)
问题是由您的异步调用引起的。
尝试按以下方式调用 GetFileFromApplicationUriAsync 同步:
StorageFile file = StorageFile.GetFileFromApplicationUriAsync(dataUri).Result;
请注意,我省略了await
关键字并获取了Result
属性。
答案 1 :(得分:0)
感谢您的回答,但问题是愚蠢的。对于有同样问题的人:
我设法修复它以将json文件也放在项目中的调试器中\ bin \ Debug \ AppX下(它没有自动去那里,你根本看不到任何东西,或者如果没有,则不会检索数据你想获得像我用存储文件那样的数据。)
感谢您的回复。