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

Blazor WASM中如何在内存生成并下载JSON文件(无需使用JS)

Blazor WASM中如何在内存生成并下载JSON文件(无需使用JS)

嘿,这个需求我之前刚踩过坑并搞定了,完全不用碰JS就能实现!下面给你一步步拆解怎么做:

首先,核心思路就是把你的类实例序列化后转成内存里的字节流,再通过Blazor自带的服务触发浏览器的下载行为,全程用C#搞定。

具体实现步骤(分版本推荐)

方案一:适用于所有.NET版本(通用写法)

  1. 先在你的Blazor组件里注入NavigationManager,这是Blazor用来处理导航的核心服务,我们用它来触发下载:
@inject NavigationManager NavManager
  1. 写一个下载方法,逻辑清晰易懂:
private void DownloadJsonFile()
{
    // 1. 实例化你的业务类(这里用MyClass代替你实际的类)
    var myData = new MyClass { Id = 1, Name = "测试数据", Description = "这是内存生成的JSON内容" };

    // 2. 把类实例序列化成格式化后的JSON字符串
    string jsonString = JsonSerializer.Serialize(myData, new JsonSerializerOptions { WriteIndented = true });

    // 3. 将JSON字符串转成UTF8字节数组
    byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonString);

    // 4. 转成Base64字符串,用来构造浏览器能识别的下载链接
    string base64Json = Convert.ToBase64String(jsonBytes);

    // 5. 构造下载用的Data URI,指定MIME类型为JSON
    string downloadUrl = $"data:application/json;charset=utf-8;base64,{base64Json}";

    // 6. 触发下载:forceLoad:true确保浏览器把这个链接当成下载而非页面导航
    NavManager.NavigateTo(downloadUrl, forceLoad: true);
}
  1. 最后在组件里加个按钮触发方法就行:
<button @onclick="DownloadJsonFile">点击下载JSON文件</button>

方案二:适用于.NET 7及以上(更简洁的官方方案)

如果你的项目用的是.NET 7或更高版本,Blazor官方提供了更友好的DownloadAsync方法,能直接指定文件名,不用自己拼Base64:

private async Task DownloadJsonFile()
{
    var myData = new MyClass { Id = 1, Name = "测试数据" };
    string jsonString = JsonSerializer.Serialize(myData, new JsonSerializerOptions { WriteIndented = true });
    byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonString);

    // 用MemoryStream包装字节数组
    using var stream = new MemoryStream(jsonBytes);

    // 直接调用DownloadAsync,指定文件名和流,浏览器会自动用这个名字保存
    await NavManager.DownloadAsync("我的数据文件.json", stream);
}

小补充

  • WriteIndented = true是让JSON格式化后更易读,要是追求文件体积可以去掉这个配置;
  • 如果是超大JSON文件,Base64方式可能会有性能局限,但日常业务场景下完全够用;
  • 两种方案都完全不需要写任何JavaScript代码,纯C#就能搞定你的需求。

备注:内容来源于stack exchange,提问作者javirs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:59:08