在应用级别指定NumberFormat

时间:2014-06-27 12:50:49

标签: c# windows-phone-8 windows-phone-8.1

我正在使用JsonConvert和JsonSerializerSettings从JSON读取数据,我没有触及文化。将手机操作系统语言从en-US更改为nl-NL我丢失了我的NumberFormat。是否可以为应用设置NumberFormat?

using (Stream stream = accessStream.AsStreamForRead((int)accessStream.Size))
                    {
                        byte[] content = new byte[stream.Length];
                        await stream.ReadAsync(content, 0, (int)stream.Length);

                        string json = Encoding.UTF8.GetString(content, 0, content.Length);

                        System.Diagnostics.Debug.WriteLine("Read from file: " + json);

                        JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
                        serializerSettings.NullValueHandling = NullValueHandling.Ignore;
                        List<T> objects = JsonConvert.DeserializeObject<List<T>>(json, serializerSettings);

                        return objects;
                    }

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

   Thread.CurrentThread.CurrentUICulture.NumberFormat = new NumberFormatInfo(); // Sets the CurrenUiCulture number format to the default culture neutral format

在ASP.NET配置文件中,您也可以使用下一个section进行更改。好吧,如果它不是asp.net应用程序,它将不会有帮助。

有一个difference between current culture and uiculture - CurrentUiCulture负责格式化和其他功能,而CurrentCulture负责处理语言和资源。

但是您应该知道此代码段将更改应用中整个主线程的数字格式。它不会影响另一个线程中的数字格式。

非主流建议? :

如果您只需要更改 Json序列化 - 反序列化,那么您应该使用JsonSerializerSettings的{​​{3}}属性

JsonSerializerSettings serializerSettings = new JsonSerializerSettings() {Culture =  CultureInfo.InvariantCulture };