Мне нужно преобразовать валюту немецкого формата в 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);
2.664.221,01-
— это неверный номер JSON в соответствии со спецификацией JSON json.org/json- ru.html. См. Немецкая культура - получить двойное число из JSON с запятой. (Я полагаю, чтоJsonSerializerSettings.Culture
в основном влияет на сериализациюDateTime
, поскольку не существует стандарта представления даты и времени в JSON.) - person dbc   schedule 12.02.2020"2.664.221,01-"
Если это то, что вам нужно, см. Как выполнить локализацию при сериализации JSON? и Обработка десятичных значений в Newtonsoft.Json. На самом деле я бы сказал, что ваш вопрос является дубликатом этих трех вопросов. - person dbc   schedule 12.02.2020