如何从JSON中输出精确的HTML标签?附示例数据
如何从JSON数据中输出精确的HTML标签?
这问题我天天碰——JSON里存的HTML标签都被转义成实体了(比如<代替<),直接输出只会显示源码,不会渲染成真正的HTML元素。下面分几种常用场景给你靠谱的解决方案:
前端JavaScript场景
浏览器本身就具备解析HTML实体的能力,最直接的方式就是利用DOM的innerHTML属性:
// 你的JSON数据 const jsonData = [{ "Field1": "<header class=\"main-header dark-bg\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-xl-3\">\n<a class=\"icons-darkbg-slogan main-header__slogan\" data-event_engagement=\"\" data-event_linktype=\"internal page link\" data-event_source=\"DAM|active|de|de|/\" data-event_target=\"/\" data-event_title=\"Header Home::Slogan\" href=\"/\" target=\"_self\" title=\"DWS Homepage\"><img src=\"/globalassets/images/logos/dws_logo_global...." }]; // 提取转义后的HTML字符串 const escapedHtml = jsonData[0].Field1; // 找到要插入的目标DOM元素(比如id为header-container的元素) const targetContainer = document.getElementById('header-container'); // 直接赋值给innerHTML,浏览器会自动解码实体并渲染HTML targetContainer.innerHTML = escapedHtml;
如果是在Node.js环境(比如后端渲染),可以用he库来解码实体:
npm install he
const he = require('he'); const unescapedHtml = he.decode(escapedHtml); // 之后就可以把unescapedHtml插入到模板中
后端Python场景
Python标准库的html模块自带了解码HTML实体的方法,非常方便:
import html import json # 加载你的JSON数据(这里假设已经读取完成) json_data = [{"Field1": "<header class=\"main-header dark-bg\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-xl-3\">\n<a class=\"icons-darkbg-slogan main-header__slogan\" data-event_engagement=\"\" data-event_linktype=\"internal page link\" data-event_source=\"DAM|active|de|de|/\" data-event_target=\"/\" data-event_title=\"Header Home::Slogan\" href=\"/\" target=\"_self\" title=\"DWS Homepage\"><img src=\"/globalassets/images/logos/dws_logo_global...." }] # 解码HTML实体 unescaped_html = html.unescape(json_data[0]['Field1']) # 之后可以将这个字符串插入到HTML模板,或者直接写入响应输出 print(unescaped_html)
重要注意事项
- 安全风险:如果你的JSON数据来自不可信来源(比如用户输入),直接输出解码后的HTML会有XSS攻击风险。前端可以用
DOMPurify过滤危险标签,后端可以用bleach库做同样的处理。 - 换行处理:JSON里的
\n解码后会变成文本换行,要是想在页面上显示换行效果,可以把\n替换成<br>标签,或者给容器元素添加CSS样式white-space: pre-line。
内容的提问来源于stack exchange,提问作者Zabiullah V M
相关产品推荐
相关产品推荐

