【问题标题】:Specify NumberFormat at app level在应用级别指定 NumberFormat
【发布时间】:2014-06-27 12:50:49
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你可以试试这个:

       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 负责语言和资源。

    但你应该知道,这个 sn-p 会改变应用程序中整个主线程的数字格式。并且不会影响其他线程中的数字格式。

    离题建议? :

    如果您只需要更改Json 序列化-反序列化,那么您应该使用JsonSerializerSettingsCulture 属性

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

    【讨论】:

    • 我最后用的是JSON,没理由坚持XML。
    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多