使用 JsonConvert 将具有德语区域性格式的字符串转换为双精度 [duplicate]

Convert string with German culture format to double using JsonConvert [duplicate]

提问人:nirag tibdewal 提问时间:2/12/2020 更新时间:2/12/2020 访问量:760

问:

我需要将 JSON 中的德语格式货币(值可以是负数或正数)转换为 Double,我可以使用 double.parse 并指定 NumberStyle,如下所示

CultureInfo culture = CultureInfo.CreateSpecificCulture("de-DE");
var convertedValue = double.Parse("2.664.221,01-", NumberStyles.Currency, culture);

但是,有多个属性需要转换,我正在寻找一种更好的方法来做到这一点,而不是对每个属性进行解析。我正在考虑使用JsonSerializerSettings,然后使用Json Convert。但找不到在JsonSerializerSettings中指定样式的方法。

有没有更好的方法来解决这个问题?

var settings = new JsonSerializerSettings()
                    {
                        Culture = new CultureInfo("de-DE"),
                        //NumberStyle = currency 
                    };

                    var res = JsonConvert.DeserializeObject<MyObject>(json, settings);
json.net 区域性 jsonconvert 不变文化 json转换器

评论

0赞 dbc 2/12/2020
这是设计使然,根据 JSON 规范 json.org/json-en.html,这是一个格式错误的 JSON 编号。请参阅德国文化 - 使用逗号从 JSON 中获取双精度数字。(我认为主要影响序列化,因为没有关于日期和时间在JSON中表示的标准。2.664.221,01-JsonSerializerSettings.CultureDateTime
0赞 dbc 2/12/2020
假设您可以将所有浮点数序列化为字符串而不是数字,如果这样做,则可以在德语语言环境中格式化它们,例如 如果这是你想要的,请参阅如何在 JSON 序列化时进行本地化?在 Newtonsoft.Json 中处理十进制值。事实上,我会说你的问题是这三个问题的重复。"2.664.221,01-"

答: 暂无答案