切换json数据文件

Switch json data file

我想根据所选语言切换包含我的应用程序数据的 json 文件。

基本上这意味着在更改语言时更改数据 uri 以指向新的 uri:

Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");

我为此使用以下开关:

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture;

        string locale = ci.ToString();

        switch (locale)
        {
            case "fr":
                {
                    Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json");

                    break;
                }

            case "en":
                {
                    Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json");
                }
        }

我收到错误消息:“名称‘dataUri’在当前上下文中不存在。我做错了什么以及如何解决这个问题?

嘿,这只是一个辅助功能错误。您在本地为个案定义了 dataUri。你应该这样做。 希望这有帮助。谢谢

       Uri dataUri = null;
       switch (locale)
       {
            case "fr":
                {
                    dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json");
                    break;
                }
            case "en-US":
                {
                    dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json");
                    break;
                }
       }
       //You can access it now --- dataUri

我觉得Sunil Kumar S C是对的,你定义的dataUri只在case里面起作用。

关于您的代码的另一个建议是,您最好不要使用 switch case 来执行此操作,因为当您需要支持一种新文化时,您需要更改代码。

可以直接在文件名后面追加文化,如果没有特定的文化文件,则使用默认文化。所以当你想支持更多的文化时,只需要添加一个新文件,而不需要更改代码。

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture;
string locale = ci.ToString();
Uri dataUri = new Uri(string.Format("ms-appx:///DataModel/SampleData.{0}.json", ci.ToString()));

Uri变量dataUri = null;此变量在发布区public封存classItemPage:Page

反序列化 json 内容