@rockwell323

Почему меняется числовое значение после JSON.parse()?

Получаю ответа с сервера {"id": 1680365554570513128} <-- строка.
После JSON.parse({"id": 1680365554570513128}) числовое значение ключа id меняется, становиться некорректным вот таким:
{
    "id": 1680365554570513200 //должно быть 1680365554570513128
}

Почему так и как этого избежать?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Number.MAX_SAFE_INTEGER == 253 - 1 == 9007199254740991
1680365554570513200 > 9007199254740991
Передавайте id как строку.
Ответ написан
Tom_Xor
@Tom_Xor
Также вполне вероятно сервер присылает некорректный JSON из-за особенности, упомянутой Rsa97.

Проще всего решить проблему, присылая с сервера JSON, в котором значение свойства id уже строкового типа. Альтернативное решение требует частичного изменения десериализации JSON.

Ну то что я превысил числовое значение это понятно, пытаюсь обернуть значение id в строку, но пока что безуспешно.

Значение должно изначально иметь строковый тип, а не преобразовываться к значению строкового типа из значения численного типа.

Рекомендую хранить значение идентификатора, представленное строкой, в системе счисления с основанием 36, чтобы сократить длину строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы