API返回Unicode科学单位多了额外反斜杠,如何解决并正确渲染到UI?
问题根本原因
这是典型的JSON双重转义问题:你存储的Unicode转义序列\u00b3在API序列化返回时被额外转义了一次,导致斜杠被转义为\\,最终返回m\\u00b3/h的错误格式。
最优解决方案(后端修复)
从数据源侧处理可以彻底规避同类问题:
- 无需手动将单位转成Unicode转义序列存储,直接存
m³/h原始字符即可,主流关系型、非关系型数据库都原生支持Unicode字符 - 检查API的JSON序列化逻辑,确认是否存在两次序列化操作,或者手动加了额外的转义规则,移除多余转义步骤即可正常返回
m³/h或者正确的m\u00b3/h格式
前端临时修复方案
如果后端暂时无法调整,可以在前端渲染前做一次转义解析,JS示例代码如下:
// 处理双重转义的Unicode字符串 const parseEscapedUnit = (str) => { return str.replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCodePoint(Number.parseInt(hex, 16)) ) } // 调用示例 const apiResult = "m\\\\u00b3/h" console.log(parseEscapedUnit(apiResult)) // 输出 m³/h
处理后再将字段传入UI组件即可正常显示。
内容的提问来源于stack exchange,提问作者Nasir
相关产品推荐
相关产品推荐

