使用he库decode方法解码HTML实体时出现多余反斜杠的解决咨询
问题
我正在使用he库的decode方法解码API获取的HTML实体,除了解码后字符串中的引号被添加转义反斜杠外,其余功能正常,不清楚该现象的原因,请问如何消除该问题?
我的代码片段:
const resultAnswersCombined = resultNewAttribute.map(item => { return { ...item, answers: [item.correct_answer, ...item.incorrect_answers], question: he.decode(item.question) } })
关键代码行:
question: he.decode(item.question)
使用上述代码后,console.log输出:
question: "Who played Deputy Marshal Samuel Gerard in the 1993 film \"The Fugitive\"?"
若直接使用未解码的字段:
question: item.question
输出为:
question: "Who played Deputy Marshal Samuel Gerard in the 1993 film "The Fugitive"?"
补充细节:问题中的'被正确解码为'。
解决方法
你看到的转义反斜杠并不是实际存在于字符串里的内容,只是console.log在打印包含双引号的字符串时,为了区分字符串的边界和内部引号自动加上的格式化标记。实际存储在变量中的字符串并没有这些反斜杠,完全不影响后续使用。
如果要验证这一点,你可以把解码后的question插入到页面DOM元素中,或者直接打印字符串本身:
console.log(he.decode(item.question))
此时控制台会输出无转义的原始内容:
Who played Deputy Marshal Samuel Gerard in the 1993 film "The Fugitive"?
如果后续需要做JSON序列化,这种转义是标准行为,不需要额外处理——he.decode已经完成了HTML实体到正常字符的转换,序列化时的转义不会改变字符串的实际含义。
内容的提问来源于stack exchange,提问作者lordpotato89
相关产品推荐
相关产品推荐

