Разобрать число с плавающей запятой в JSON в JavaScript также для 1 как 1,00

Ситуация: мой датчик измеряет данные, которые я обрабатываю в NodeRED-функции и затем анализирую в JSON-объект. NodeRED-функция позволяет мне писать JavaScript-код. JSON-объект отправляется в принимающий модуль, написанный на C++, который работает на JSON с библиотекой JSON_spirit. Я не могу изменить приемный модуль.

Проблема: получающее приложение пытается получить одно значение JSOn с помощью функции value.get_float(), Датчики иногда измеряют точный 1,00. Это передается в JSON как {"value":1}, Принимающий модуль завершается с ошибкой:

terminate called after throwing an instance of 'std::runtime_error'
what():  get_value< real > called on integer Value

Очевидно, функция value.get_float() Кажется, не может изменить 1 на 1,0, и, как уже упоминалось, я не могу изменить используемую функцию. Итак, мне нужно найти способ разобрать {"value":1.00} в JSON.

Что я пробовал: я пытался в моей функции NodeRED value.toFixed(2) но это вернет строку {"value":"1.00"}, Итак, я попытался снова разобрать строку как число с плавающей точкой, как это

value.toFixed(2);
value = parseFloat(value);

Но это привело бы к 1,00 снова JSON, как это: {"value":1}, Я также попробовал некоторые уловки с округлением, но как только JavaScript может опустить ненужные десятичные числа, это делает. Итак, я еще не нашел решение.

Любые идеи приветствуются.

PS: Это мой первый вопрос Stackru, так что, пожалуйста, не будьте слишком резкими со мной:)


Изменить: я нашел следующий обходной путь. я использую value.toFixed(2); в первую очередь, чтобы получить {"value":"1.00"}, Позже я использую регулярное выражение для строки в узле изменения в NodeRED. RegEx:

"Value":\"(\d+\.\d{2})\"

Заменить:

"Value":$1

Мой реальный случай был немного сложнее, чем пример, поэтому регулярное выражение было немного длиннее. Но regex101 очень помог.

1 ответ

Думаю, этот пост уже был там: Принудительное значение с плавающей запятой при использовании JSON.stringify

Так что я думаю, что в Javascript нет разницы между 1 и 1,0

Другие вопросы по тегам