El problema surge: el atributo id del Java Bean en el backend usa el tipo Long y corresponde a la clave principal de la base de datos usando el tipo bigint.Cuando los datos se pasan al frontend usando JSON, el final de los datos recibidos por el frontend se convertirá en 0. (Se produjo el problema de la pérdida de precisión)
La causa del problema: el rango que puede representar long en Java es mayor que number en js, lo que significa que algunos valores no se pueden almacenar en js (convirtiéndose en valores inexactos), lo que hace que los últimos dígitos de Id se conviertan directamente en 0.
El front-end recibe e imprime:
Solución 1 (Backend) : cambie la identificación del backend a un tipo de cadena, y el frontend lo recibirá como una cadena sin pérdida de precisión
Solución 2 (front-end) : la solución front-end 1 introduce json-bigint en el front-end,
npm install json-bigint
Solución 3 (front-end) : donde se encapsula axios , transformResponse permite la modificación de los datos de respuesta antes de pasarlos a then/catch.
Modifique el código fuente de axios, busque transformResponse en node_modules/axios/lib/default.js y cambie su contenido a:
transformResponse: [function transformResponse(data) {
/*eslint no-param-reassign:0*/
if (typeof data === 'string') {
try {
data = JSON.parse(data);
} catch (e) { /* Ignore */ }
}
return data;
}],