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

在C# ASP.NET MVC服务器端将JSON转换为JavaScript代码的方法

实现服务器端将JSON转为可嵌入的JavaScript代码

当然可以实现——本质上利用JSON本身就是JavaScript对象字面量子集的特性,直接把服务器端的JSON(或.NET对象序列化后的JSON)作为JS对象赋值给变量,嵌入页面的内联脚本中,客户端就能直接使用,完全跳过JSON.parse()步骤。

优先方案:使用Newtonsoft/JSON.Net

场景1:从.NET对象直接生成JS代码

如果服务器端持有对应的.NET对象,直接用JsonConvert.SerializeObject()序列化即可得到合法的JS对象字面量:

// 示例.NET对象
var appData = new 
{
    Username = "Brady",
    Preferences = new 
    {
        Theme = "dark",
        NotificationsEnabled = true,
        FavoriteTags = new[] { "c#", "javascript", "json" }
    }
};

// 序列化为标准JSON(即合法JS对象),可选择格式化提升可读性
string jsObject = JsonConvert.SerializeObject(appData, Formatting.Indented);

然后在页面的内联脚本中直接输出:

<script>
// 直接赋值为JS对象,客户端无需解析
const clientData = @Html.Raw(jsObject);

// 直接使用示例
console.log(clientData.Username); // 输出 "Brady"
</script>

场景2:已有JSON字符串,转为可嵌入的JS代码

如果已经拿到了JSON字符串,只要它是标准格式的,直接嵌入脚本即可(Newtonsoft序列化的天然符合标准)。如果担心转义问题,可以先把JSON字符串解析为JToken再重新序列化(其实结果一致,但能确保格式合规):

string existingJson = "{\"Name\":\"Alice\",\"Age\":30}";
JToken token = JToken.Parse(existingJson);
string jsObject = token.ToString(Formatting.Indented);

替代方案:使用System.Text.Json(ASP.NET Core原生)

如果项目用的是ASP.NET Core,也可以用原生的System.Text.Json实现同样效果:

using System.Text.Json;

var appData = new { /* 同前示例对象 */ };
string jsObject = JsonSerializer.Serialize(appData, new JsonSerializerOptions { WriteIndented = true });

嵌入页面的方式和Newtonsoft完全一致。

关键注意事项

  • XSS风险:如果数据包含用户输入的内容,直接嵌入脚本可能引发XSS攻击。务必确保数据来自可信源,或提前做XSS清理(比如使用AntiXSS库处理敏感内容)。
  • 格式兼容性:Newtonsoft生成的标准JSON(键用双引号)完全符合JS语法,不需要额外修改即可直接作为对象使用。
  • 特殊字符处理:序列化过程会自动转义双引号、换行符等特殊字符,比如字符串中的"会被转为\",在JS中能正常解析。

内容的提问来源于stack exchange,提问作者Brady Moritz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:07:13