JSON разбирать номер как строку - PullRequest
1 голос
/ 25 марта 2020

Как лучше всего проанализировать JSON число как строку в javascript

Example:
{
  "a": 10.00
}

Обратите внимание, у меня нет контроля над значением 10,00. Я не могу добавить туда "+". Я хочу сохранить десятичные разряды, но это не правило, что должно быть 2 десятичных знака.

Результат должен быть 10,00, а не 10

Ответы [ 2 ]

4 голосов
/ 25 марта 2020

Если вам нужно точно такое же количество десятичных знаков, единственный способ - если JSON представляет значение в виде строки. Если у вас нет контроля над источником, вы можете отредактировать JSON перед анализом, добавив кавычки, но это может привести к нескольким проблемам. Это должно быть тщательно проверено.

json = '{ "a": 10.00, "b":2.1020, "d":0.20,"c": "21" }';

json = json.replace(/:\s*[^"0-9.]*([0-9.]+)/g, ':"$1"');

console.log(json);
console.log(JSON.parse(json));
0 голосов
/ 25 марта 2020

Вы можете использовать регулярные выражения для извлечения значения свойства a, прежде чем JSON строка будет проанализирована и строка 10.00 будет преобразована в число 10:

const jsonString = `{
  "a": 10.00
}`
const aString = jsonString.match(/[,{]\s*\"a\":\s*([0-9.]+)/m)[1]
console.log(aString)
...