没有经过战斗的舍弃,是虚伪的;没有经过苦难的超脱,是轻佻的。——傅雷
昨天写了一篇关于前端精度丢失的博客
今天发现还有个问题,如果我们需要使用thymeleaf
在js
中使用获取的数据是一个对象
并且里面的属性还是超出16位的Long
类型的话,仍然会导致精度丢失
这里我们可以直接写一个JsonManager
/**
* Json转换管理层
*
* @author <achao1441470436@gmail.com>
* @since 2021/7/7 11:12
*/
public interface JsonManager {
/**
* 序列化处理精度丢失
*
* @param serializeObj 将要序列化的对象
* @return java.lang.Object
* @author <achao1441470436@gmail.com>
* @since 2021/7/7 11:16
*/
Object browserCompatible(Object serializeObj);
}
实现类
代码语言:javascript复制import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.stereotype.Service;
/**
* Json转换管理层实现类
*
* @author <achao1441470436@gmail.com>
* @since 2021/7/7 11:13
*/
@Service
public class JsonManagerImpl implements JsonManager {
/**
* 序列化处理精度丢失
*
* @param serializeObj 将要序列化的对象
* @return java.lang.Object
* @author <achao1441470436@gmail.com>
* @since 2021/7/7 11:16
*/
@Override
public Object browserCompatible(Object serializeObj) {
return JSON.parse(JSON.toJSONString(serializeObj, SerializerFeature.BrowserCompatible));
}
}
然后我们可以在页面上调用
代码语言:javascript复制<script th:inline="javascript">
let ruben = [[${@jsonManagerImpl.browserCompatible(ruben)}]];
console.log(ruben)
</script>
我们打开浏览器控制台查看我们替换后的结果