Есть ли простой способ для преобразования чисел в шестнадцатеричный формат с использованием JSON.stringify? Например, если у меня есть структура JSON:
{
number: 1024
}
В этом случае я хочу, чтобы вывод строки JSON был похож
{
number: 0x400
}
JSON.stringify всегда возвращает числа в десятичном формате (основание 10).
Вы можете использовать replacer
JSON.stringify
replacer получает key
двумя параметрами и value
строки. в этой функции вы хотели изменить тип числа с десятичного на шестнадцатеричный, поэтому мы проверяем, является ли тип числом, мы конвертируем его в шестнадцатеричный, используя метод toString()
с основанием 16
а если нет, то возвращаем значение напрямую без каких-либо изменений.
const obj = { num1:1024,num2:1025,num3:1026,num4:1027 }
console.log(JSON.stringify(obj, (key, value) => {
if( typeof value === 'number'){
return '0x' + value.toString(16)
}
return value
}))
Вы можете использовать .toString(16)
со своим номером.
var obj = {
num1: 1024,
num2: 1025,
num3: 1026,
num4: 1027
}
Object.keys(obj).forEach(e => obj[e] = "0x" + obj[e].toString(16))
console.log(JSON.stringify(obj))
JSON
равен "\"1024\""
или строка JSON
имеет произвольную .length
?
0x...
отформатированные числа недопустимы в формате JSON. Вы должны использовать функцию заменителяJSON.stringify
для форматирования числа в строку"0x..."
Почему вы хотите это?