InfluxDB, Телеграф, потребитель MQTT, плагин JSON: ввод JSON теряет точность в 64-битных целых числах

#json #floating-point #mqtt #influxdb #telegraf

Вопрос:

Я пытаюсь отправить некоторые данные MQTT (формат JSON) с Telegraf в InfluxDB. Я использую плагин ввода для потребителей MQTT с типом данных JSON.

Пример Данных:

{ "bsEui": 8121069193333309404 }

В базе данных InfluxDB я получаю следующие данные:

{ "bsEui": 8121069193333309000 }

Я полагаю, проблема в том, что анализатор JSON автоматически преобразует все номера JSON в float64. Может быть, у кого-то была та же проблема и он знает хороший обходной путь?

Спасибо за помощь!

Комментарии:

1. Похоже, что он округляется/отображается как округленный/усеченный до 16 цифр (8121069193333309404 => 8121069193333309000). (Плохая форма, это должно указывать на то, что это было сделано, отображая его как 8.121069193333309e18 ИМХО.) Моя 32-разрядная система округляет его до 8121069298811666432. Моя 64-разрядная система округляет его до 8121069193333309440.

2. Спасибо вам за объяснение. Я нашел хороший обходной путь с python. Для других, кто сталкивается с той же проблемой, я рекомендую использовать новый синтаксический анализатор JSON_V2 (версия 2). Телеграф нашел решение для преобразования чисел в int64.