Длинное целое число Javascript с сервера неточно

У меня есть API, из которого я делаю запрос get на выборку данных. Когда я пытаюсь сохранить Id, я вижу Javascript вокруг последней цифры, и это заставляет мою программу ломаться!

Я вижу ЭТОТ ВОПРОС, но как я могу сохранить каждыйId как string?

Я использую глобальный массив для хранения данных выбранных элементов, так или иначе, чтобы сохранить один атрибут JSON в string?

Я собираюсь иметь (например) 3 элемента и делать еще один запрос get для каждого Id:

axios.get(`http://api.nemov.org/api/v1/Market/Symbol/${this.props.ID}`)

Один из этих Id: 9481703061634967, но JS конвертирует его в 9481703061634968, поэтому запрос get не работает!

Любое решение?

Запрос на получение 9481703061634967 > Number.MAX_SAFE_INTEGER не нарушен - это число слишком велико - почему вы упомянули JSON? API возвращает XML, а не JSON

Bravo 27.10.2018 13:15
how can I save each Id as string - когда вы анализируете XML, не меняйте идентификатор с текущего типа (строка, потому что все в XML является строкой) на целое число - тогда ваш код не нарушит данные, которые он получает из API.
Bravo 27.10.2018 13:18

@Bravo - да, я имею в виду, что я не могу сделать другой запрос, который зависит от идентификатора - как я могу его сохранить? учтите, что это не один элемент, у меня есть массив объектов, каждый из которых имеет идентификатор с этим длинным!

MohamadKh75 27.10.2018 13:18

вы показали НУЛЕВОЙ код ... Итак, я не могу сказать вам, какая часть вашего кода, анализирующая XML, нарушает идентификатор - ищите parseInt, parseFloat или даже унарный + в вашем коде

Bravo 27.10.2018 13:19

Я использую Axios, поэтому я получаю JSON, а не XML

MohamadKh75 27.10.2018 13:19

вы показали XML, вы не показали JSON - что-то должно конвертировать XML в JSON - это не сервер, это должен быть ваш код

Bravo 27.10.2018 13:19

если вы имеете в виду ссылку API, если вы используете браузер, он вернет XML, но если вы используете Axios или что-то в этом роде, вы получите JSON

MohamadKh75 27.10.2018 13:20

Подводя итог: серверную часть нельзя изменить так, чтобы она возвращала строки вместо целых чисел, JSON.parse() не может быть настроен для возврата целых чисел вместо строк, поэтому единственный вариант, который я вижу, - это настраиваемый синтаксический анализатор, что кажется плохой идеей.

Jonas Wilms 27.10.2018 13:22

@JonasWilms - хм ... или, может быть, я могу создать новый массив идентификаторов (идентификатор - это строка) и сразу же скопировать каждый идентификатор при получении ответа - это сработает?

MohamadKh75 27.10.2018 13:25

Взгляните на github.com/datalanche/json-bignum/blob/master/README.md

Jonas Wilms 27.10.2018 13:26

@JonasWilms - могу ли я использовать это в React Native?

MohamadKh75 27.10.2018 13:27

Вы можете указать Axios получать XML, а не JSON (responseType) ...

georg 27.10.2018 13:28

просто установите заголовок запроса 'Accept':'application/xml', и вы получите XML

Bravo 27.10.2018 13:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
13
734
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Использовать этот:

let strId = this.props.ID.toString();
axios.get(`http://api.nemov.org/api/v1/Market/Symbol/${strId}`)

Не работает! - Учтите, что это происходит, когда я получаю данные и сохраняю ответ, НЕ когда я передаю реквизиты!

MohamadKh75 27.10.2018 13:52
Ответ принят как подходящий

См. Мое решение по вопросу это:

Transform the response to string, then apply a repalce with a regex to convert Id field to string type:

const axios = require("axios");
axios.get(url, {transformResponse: [data => data]}).then((response) => {
    let parsed = JSON.parse(response.data.replace(/"Id":(\d+),/g, '"Id":"$1",'))
    console.info(parsed)
});

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