我正在使用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;
}
答案 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 };