切换json数据文件

时间:2015-04-16 04:15:53

标签: windows-phone-8

我想根据所选语言切换包含我的应用数据的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'在当前上下文中不存在。我做错了什么以及如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我认为 Sunil Kumar S C 是正确的,您定义的dataUri只能在案例中工作。

关于您的代码的另一个建议是,最好不要使用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()));

答案 1 :(得分:0)

嘿,它只是一个可访问性错误。您正在本地为案例定义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

答案 2 :(得分:0)

Uri变量dataUri = null;此变量位于公共密封类ItemPage:Page

中发布的区域中

反序列化json内容