Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 8278|Resposta: 1

[JavaScript] O JS front-end resolve o problema da perda de precisão da serialização JSON

[Copiar link]
Publicado em 13/02/2022 14:37:43 | | | |
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 favorResposta

(Fim)




Anterior:[Combate real]. NET/C# exporta o cache usando consulta fuzzy do StackExchange.Redis
Próximo:[Prática] Java não consegue detectar exceções personalizadas usando reflexão do hutool
Publicado em 13/02/2022 16:28:40 |
Venha aprender de novo...
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com