У меня есть 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
не работает!
Любое решение?
how can I save each Id as string
- когда вы анализируете XML, не меняйте идентификатор с текущего типа (строка, потому что все в XML является строкой) на целое число - тогда ваш код не нарушит данные, которые он получает из API.
@Bravo - да, я имею в виду, что я не могу сделать другой запрос, который зависит от идентификатора - как я могу его сохранить? учтите, что это не один элемент, у меня есть массив объектов, каждый из которых имеет идентификатор с этим длинным!
вы показали НУЛЕВОЙ код ... Итак, я не могу сказать вам, какая часть вашего кода, анализирующая XML, нарушает идентификатор - ищите parseInt, parseFloat или даже унарный + в вашем коде
Я использую Axios
, поэтому я получаю JSON, а не XML
вы показали XML, вы не показали JSON - что-то должно конвертировать XML в JSON - это не сервер, это должен быть ваш код
если вы имеете в виду ссылку API, если вы используете браузер, он вернет XML, но если вы используете Axios
или что-то в этом роде, вы получите JSON
Подводя итог: серверную часть нельзя изменить так, чтобы она возвращала строки вместо целых чисел, JSON.parse()
не может быть настроен для возврата целых чисел вместо строк, поэтому единственный вариант, который я вижу, - это настраиваемый синтаксический анализатор, что кажется плохой идеей.
@JonasWilms - хм ... или, может быть, я могу создать новый массив идентификаторов (идентификатор - это строка) и сразу же скопировать каждый идентификатор при получении ответа - это сработает?
Взгляните на github.com/datalanche/json-bignum/blob/master/README.md
@JonasWilms - могу ли я использовать это в React Native?
Вы можете указать Axios получать XML, а не JSON (responseType
) ...
просто установите заголовок запроса 'Accept':'application/xml'
, и вы получите XML
Использовать этот:
let strId = this.props.ID.toString();
axios.get(`http://api.nemov.org/api/v1/Market/Symbol/${strId}`)
Не работает! - Учтите, что это происходит, когда я получаю данные и сохраняю ответ, НЕ когда я передаю реквизиты!
См. Мое решение по вопросу это:
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) });
Запрос на получение
9481703061634967 > Number.MAX_SAFE_INTEGER
не нарушен - это число слишком велико - почему вы упомянули JSON? API возвращает XML, а не JSON