Requisitos: Criei uma página de análise sintática online para o jwt, quando o conteúdo do jwt tem um tipo longo, usar o método padrão JSON para analisar causa perda de precisão, como mostrado na figura abaixo:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
O JavaScript possui apenas um tipo de número: Número, Número é um número de ponto flutuante de dupla precisão e, ao contrário de muitas outras linguagens de programação, o JavaScript não define diferentes tipos de números, como inteiros, curtos, longos, de ponto flutuante, etc. Portanto, no JavaScript, os números não são divididos em tipos inteiros e tipos de ponto flutuante, e todos os números são tipos de ponto flutuante.
Ao expressar um número inteiro, Número pode representar um intervalo inteiro de [−2 até a potência de 53, 2 elevado à potência de 253]. Porque Number tem 8 bytes e 64 bits, incluindo 1 bit de sinal, 11 bits exponenciais e 52 dígitos mantisa.
Você pode usar Number.MAX_SAFE_INTEGER e Number.MIN_SAFE_INTEGER para visualizar os inteiros de segurança máximo e mínimo。
Quando a interface backend retorna um campo de tipo longo, a interface usa JSON.parse(text) para desserializar a exibição, o que causará um erro de exibição, e a solução é que a interface backend converta o campo de tipo longo em tipo string e retorna essa imagem.
projeto lossless-json, analisando JSON sem risco de perder informações numéricas. Endereço do GitHub:O login do hiperlink está visível.
Em primeiro lugarClone o projeto lossless-jsonpara construir uma biblioteca agrupada e minificada (ES5, o PC precisa instalar node.js), e primeiro instalar as dependências:
Depois, compila da seguinte forma:
./dist/lossless-json.js Isso gerará um pacote de compatibilidade ES5 que pode ser executado no navegador e node.js.
Testado pelo console do navegador da seguinte forma:
Modificar o código do projeto,Introduza lossless-json.js arquivos, chamando LosslessJSON para serialização e desserialização JSON,Corrigido o problema da perda de precisão, como mostrado na figura abaixo:
seja json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} seja texto = LosslessJSON.stringify(json); '{"foo":"bar"}'
Endereço do teste:O login do hiperlink está visível.
Por fim, anexe o arquivo lossless-json.js compilado:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta (Fim) |