C# 使用自定义数据源从JSON获取数据

C# 使用自定义数据源从JSON获取数据,c#,json,windows-phone-8,windows-phone,json.net,C#,Json,Windows Phone 8,Windows Phone,Json.net,首先,我对Windows Phone开发非常陌生。目前,我正试图在本地保存一个JSON文件,然后读取它并使用对象 我可以在本地保存JSON,但现在我想使用我的数据源将其读回 这是我的数据源: public sealed class OrganizationDataSource { private static OrganizationDataSource _organizationDatasource = new OrganizationDataSource();

首先,我对Windows Phone开发非常陌生。目前,我正试图在本地保存一个JSON文件,然后读取它并使用对象

我可以在本地保存JSON,但现在我想使用我的数据源将其读回

这是我的数据源:

public sealed class OrganizationDataSource
    {
        private static OrganizationDataSource _organizationDatasource = new OrganizationDataSource();

        private static string jsonPath = "organizationdata.json";

        private static List<OrganizationObject> _organizationList = new List<OrganizationObject>();

        public static List<OrganizationObject> organizationList
        {
            get { return _organizationList; }
        }

        public static async Task AddOrganization(string jsonObjects)
        {
            await AddOrganizationToList(jsonObjects, true);
        }

        /// <summary>
        /// Alle events worden lokaal opgehaald bij het starten van de applicatie.
        /// </summary>
        private async Task GetOrganizationFromJson()
        {
            if (organizationList.Count != 0)
                return;

            var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            var file = await folder.GetFileAsync(jsonPath);
            var jsonText = await Windows.Storage.FileIO.ReadTextAsync(file);
            Debug.WriteLine(jsonText);
            await AddOrganizationToList(jsonText, false);
        }

        /// <summary>
        /// Statische methode waarmee alle events lokaal opgehaald worden uit een Json bestand.
        /// </summary>
        public static async Task getLocalOrganization()
        {
            await _organizationDatasource.GetOrganizationFromJson();
        }

        private static async Task AddOrganizationToList(string organization, bool newOrganization)
        {
            if (!newOrganization && _organizationList.Count != 0)
                return;
            try
            {
                Organization orgItem = JsonConvert.DeserializeObject<Organization>(organization);
                Debug.WriteLine(orgItem);
                _organizationList = orgItem.organizations;
                string content = organization;
                Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
                StorageFile sampleFile = await localFolder.CreateFileAsync(jsonPath,CreationCollisionOption.ReplaceExisting);
                await FileIO.WriteTextAsync(sampleFile, content);
            }
            catch (JsonReaderException jrex)
            {
                Debug.WriteLine(String.Format("AddNewsToList JsonReasException: {0}", jrex.Message));
            }
            catch (ArgumentException argex)
            {
                Debug.WriteLine(String.Format("AddNewsToList ArgumentException: {0}", argex.Message));
            }
            catch (NullReferenceException nrex)
            {
                Debug.WriteLine(String.Format("AddNewsToList NullReferenceException: {0}", nrex.Message));
                return;
            }
        }
    }
现在的问题是我的计数总是返回0。
有人想到了吗?

您从未调用下载/解析json的代码来将对象添加到列表中。列表在初始化后仍然为空。@kennyzx我在另一个函数中调用它。organizationdata.json确实存在。当您尝试重新读取该文件时,是否确定该文件已完全写入?可能发生的情况是,当您尝试将文件读回时,后台线程仍在写入该文件。
 private void BindData()
        {
            try
            {
                orgItems = OrganizationDataSource.organizationList;
                Debug.WriteLine(orgItems.Count());
                foreach (OrganizationObject obj in orgItems)
                {
                    Debug.WriteLine(obj.organization_alias);
                }
            }  
            catch (KeyNotFoundException)
            {
                NavigationService.GoBack();
            }
        }