You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phoenix Liveview中如何在script标签内插入原生JSON-LD内容

在Phoenix LiveView模板中正确插入JSON-LD的方案

问题根因

Phoenix的LEEx/HEEx模板默认启用HTML自动转义机制,会对所有动态输出的特殊字符(双引号、尖括号等)做转义处理。你通过Poison.encode!生成的本是合法JSON字符串,但经过模板转义后双引号会被替换为",最终输出为被转义的字符串格式,无法被识别为有效的JSON结构。

解决方法

使用Phoenix内置的raw/1函数,将编码后的JSON内容标记为安全HTML,跳过自动转义步骤即可正常输出原生JSON结构。

修改后的root.html.leex对应代码:

<!DOCTYPE html>
<html lang="pt-BR">
  <head>
...
<%= if @data_structure do %>
  <script type='application/ld+json'>
    <%= raw Poison.encode!(@data_structure) %>
  </script>
<% end %>
...
</head>
<body>
<%= @inner_content %>
</body>
<html>

补充说明

  • 若你的项目使用Phoenix默认推荐的Jason库做JSON编码,替换写法为<%= raw Jason.encode!(@data_structure) %>即可,逻辑完全一致。
  • 由于raw/1会跳过转义校验,请确保@data_structure中的内容均为可控内容,不要直接插入未过滤的用户提交内容,避免安全风险。

内容的提问来源于stack exchange,提问作者Allan Duarte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:15:01