Parse float с десятичными знаками для 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.

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

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

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

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

PS: Это мой первый раз когда-либо вопрос StackOverflow, поэтому, пожалуйста, не слишком грубый на меня :)


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

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

Заменить:

"Value":$1

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

+1
источник поделиться

Посмотрите другие вопросы по меткам или Задайте вопрос