JSON замена запятой на точку

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
получаю в json дробное число с запятой, например 4,2554
а нужно чтобы с точкой было (для записи в БД).
Никак не получается применить Replace к дробному числу, получаю ошибку 'decimal' does not contain a definition for 'Replace'
Подскажите, пожалуйста, код - взять переменную из json и заменить запятую на точку
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
получаю в json дробное число с запятой, например 4,2554
а нужно чтобы с точкой было (для записи в БД).
Никак не получается применить Replace к дробному числу, получаю ошибку 'decimal' does not contain a definition for 'Replace'
Подскажите, пожалуйста, код - взять переменную из json и заменить запятую на точку
decimal - это целые числа, а вам нужно double. Отравьте часть C# кода сюда, если не выйдет.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 261
Благодарностей
679
Баллы
113
получаю в json дробное число с запятой, например 4,2554
а нужно чтобы с точкой было (для записи в БД).
Никак не получается применить Replace к дробному числу, получаю ошибку 'decimal' does not contain a definition for 'Replace'
Подскажите, пожалуйста, код - взять переменную из json и заменить запятую на точку
Вообще можно сконвертить полученное число в строку и уже в строке сделать реплейс
 
Последнее редактирование:

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
decimal - это целые числа, а вам нужно double. Отравьте часть C# кода сюда, если не выйдет.
Я практически не знаю C#, наобум что-то пытаюсь собрать.
Попробовал double, но получаю ту же ошибку "'double' does not contain a definition for 'Replace'"
Видимо к переменным json это не применимо
C#:
double average_rating = project.Json.average_rating.Replace(".", ",");
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
Я практически не знаю C#, наобум что-то пытаюсь собрать.
Попробовал double, но получаю ту же ошибку "'double' does not contain a definition for 'Replace'"
Видимо к переменным json это не применимо
C#:
double average_rating = project.Json.average_rating.Replace(".", ",");
C#:
double average_rating = double.Parse(Convert.ToString(project.Json.average_rating).Replace(".",","));
return average_rating;
 
  • Спасибо
Реакции: Greez и vedi108

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
C#:
double average_rating = double.Parse(Convert.ToString(project.Json.average_rating).Replace(".",","));
return average_rating;
Не срабатывает. В этом варианте мы меняем . на , а нужно наоборот.
Если поменять местами точку и запятую, получаем ошибку "Входная строка имела неверный формат."
Я так понимаю, зенка не воспринимает итоговое значение как число
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
Не срабатывает. В этом варианте мы меняем . на , а нужно наоборот.
Если поменять местами точку и запятую, получаем ошибку "Входная строка имела неверный формат."
Я так понимаю, зенка не воспринимает итоговое значение как число
Вы можете показать ту часть кода, где у вас проблема? Не понятно каким кодом куда вы что вставляете, что у вас ошибка.
 

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
Вы можете показать ту часть кода, где у вас проблема? Не понятно каким кодом куда вы что вставляете, что у вас ошибка.
Больше нет никакого кода)
Я получаю JSON, делаю парсинг. В одном из полей json лежит дробное число 4,3445
Мне его нужно записать в базу данных, но с запятой записать не получается, потому что в бд дробные числа через точку.

Я переделал ваш код, чтобы на выходе получить строку, поскольку решил, что в базе все равно установлен тип поля и писать туда можно и текст. Попробовал и все получилось, в базу записалось корректно.
string average_rating = Convert.ToString(project.Json.average_rating).Replace(",",".");
return average_rating;
Так что благодарю за помощь!
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Больше нет никакого кода)
Я получаю JSON, делаю парсинг. В одном из полей json лежит дробное число 4,3445
Мне его нужно записать в базу данных, но с запятой записать не получается, потому что в бд дробные числа через точку.

Я переделал ваш код, чтобы на выходе получить строку, поскольку решил, что в базе все равно установлен тип поля и писать туда можно и текст. Попробовал и все получилось, в базу записалось корректно.


Так что благодарю за помощь!
Исходник json в текстовом файле предоставьте пожалуйста, посмотрим, чем можно Вам помочь.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
Не срабатывает. В этом варианте мы меняем . на , а нужно наоборот.
Если поменять местами точку и запятую, получаем ошибку "Входная строка имела неверный формат."
Я так понимаю, зенка не воспринимает итоговое значение как число
Тогда получайте кодом string в зеннопеременную и вставляйте в базу. Либо в базе замените тип ячейки с decial на text или double
C#:
string average_rating = Convert.ToString(project.Json.average_rating).Replace(",",".");
return average_rating;
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 261
Благодарностей
679
Баллы
113
Тогда получайте кодом string в зеннопеременную и вставляйте в базу. Либо в базе замените тип ячейки с decial на text или double
C#:
string average_rating = Convert.ToString(project.Json.average_rating).Replace(",",".");
return average_rating;
Не совсем понимаю, чем децимал так не угодил? тот же дубл только диапазон чисел другой
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
Не совсем понимаю, чем децимал так не угодил? тот же дубл только диапазон чисел другой
Та перепутал, думал так только целые числа пишутся, но вижу что не только. В переменную вышло получить нужное число или вы не знаете как в переменную вставить?
 

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
Та перепутал, думал так только целые числа пишутся, но вижу что не только. В переменную вышло получить нужное число или вы не знаете как в переменную вставить?
Если вопрос ко мне, то да, я получил нужное число (с точкой) в виде строки. Мне строки достаточно.
А получение в виде числа видимо невозможно, потому что формат double с точкой не воспринимается зенкой как корректный
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 524
Благодарностей
1 321
Баллы
113
Если вопрос ко мне, то да, я получил нужное число (с точкой) в виде строки. Мне строки достаточно.
А получение в виде числа видимо невозможно, потому что формат double с точкой не воспринимается зенкой как корректный
1. Зеннопостер переменные только string по умолчанию.
2. Не совсем понятно куда вы что вставляете, что говорите что зенка не воспринимает. Можно хотя бы скрин проекта, что бы увидить последовательность кубиков, в которых начинаются проблемы? Так как не понятно логическая цепочка. Я понял это так:
1. Парсим Json через зенку.
2. Через C# достаем в зеннопеременную число, заменяя запятую на точку.
3. Зеннокубиком База Данных - делаем запись в базу данных с помощью зенно переменных.

Либо тут что-то подобное описано.
 

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
12
Баллы
18
1. Зеннопостер переменные только string по умолчанию.
2. Не совсем понятно куда вы что вставляете, что говорите что зенка не воспринимает. Можно хотя бы скрин проекта, что бы увидить последовательность кубиков, в которых начинаются проблемы? Так как не понятно логическая цепочка. Я понял это так:
1. Парсим Json через зенку.
2. Через C# достаем в зеннопеременную число, заменяя запятую на точку.
3. Зеннокубиком База Данных - делаем запись в базу данных с помощью зенно переменных.
Мне казалось что вопрос уже исчерпан), но если есть вопросы, то проясню
Вы все верно написали - парсим json, достаем переменную, заменяя запятую на точку.
Вы предложили сначала код для типа double
C#:
double average_rating = double.Parse(Convert.ToString(project.Json.average_rating).Replace(",","."));
return average_rating;
Этот код не срабатывает, про него я и написал, что зенка не воспринимает число с точкой как double.
Поэтому корректный вариант - получить переменную в тип string
C#:
string average_rating = Convert.ToString(project.Json.average_rating).Replace(",",".");
return average_rating;
Я так и сделал, все получилось, всех благодарю)
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)