2014-06-27 51 views
0

我正在使用JsonConvert和JsonSerializerSettings从JSON读取数据,但我没有触及文化。将手机操作系统语言从en-US更改为nl-NL,我失去了我的NumberFormat。是否可以设置应用程序的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; 
        } 

回答

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处理语言和资源。

但是你应该知道这段代码会改变你的整个主线程在应用程序中的数字格式。它不会影响另一个线程中的数字格式。

OFF-TOPIC SUGGESTION? :

如果你只需要改变的JSON序列化,反序列化那么你应该使用的JsonSerializerSettings

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

我使用JSON到底Culture财产,没有理由坚持XML。 – Boris

相关问题