如何生成包含 JSON 结构的下载文件?

2024-02-03

我的控制器中有这个方法。

public IActionResult Download()
{
  return Json(_context.Users);
}

我注意到它生成了正确的 JSON 结构but它在浏览器中呈现为普通文本。我希望将其下载到客户的计算机上。我怎么做?

我不确定是否应该使我的对象以某种方式进行流式传输像这样 https://stackoverflow.com/a/42460443/1525840或者也许在我的硬盘驱动器上创建一个文件并提供它像这样 https://tahirnaushad.com/2017/08/28/uploaddownload-files-in-asp-net-core-2-0/.

我找不到任何让我印象深刻的东西,就像我们在 C# 中所习惯的那样直接、简单。所以我担心我在这里遗漏了一个概念。


您可以将 json 对象写入流或数组并使用其中之一File方法重载。添加方便Serialize method

private byte[] Serialize(object value, JsonSerializerSettings jsonSerializerSettings)
{
    var result = JsonConvert.SerializeObject(value, jsonSerializerSettings);

    return Encoding.UTF8.GetBytes(result);
}

并按如下方式使用它

public IActionResult Download()
{
    var download = Serialize(_context.Users, new JsonSerializerSettings());

    return File(download , "application/json", "file.json");
}

如果您在中设置特殊的 json 序列化器设置Startup using .AddJsonOptions()你想用它们作为ASP.NET框架将它们用于Json方法。注入MvcJsonOptions在控制器中

IOptions<MvcJsonOptions> _options;

public YourController(IOptions<MvcJsonOptions> options)
{
    _options = options;
}

并将设置传递给方法

public IActionResult Download()
{
    var download = Serialize(_context.Users, _options.Value.SerializerSettings);

    return File(download , "application/json", "file.json");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成包含 JSON 结构的下载文件? 的相关文章

随机推荐

  • 在 IOStreams 库中使用ignore(numeric_limits::max()) 是否可以处理任意大量的流?

    在 C 标准 第 27 6 1 3 24 节 中 对于 流媒体ignore IOStreams 库中的函数 这意味着如果您为 n 提供一个参数numeric limits max 它将继续忽略字符 永远直到找到分隔符 甚至远远超出实际 流大
  • Scala 的元组展开的细微差别

    当尝试将元组展开为 val 时 我注意到 scala 中的以下行为 scala gt val A B C 1 2 3
  • 应用程序未在发布模式下进入 Posix 信号处理程序

    我正在尝试在 Linux Arm 设备上正常关闭我的控制台应用程序 发送的信号是SIGTERM 我用新的实现了 Posix 信号处理程序PosixSignalRegistration Create https learn microsoft
  • stringdist 包中的 Jaccard 相似度来匹配字符串中的单词

    我想使用 stringdist 函数中的 Jaccard 相似度来确定词袋的相似度 据我所知 使用 Jaccard 只能匹配字符串中的字母 c lt c cat dog person d lt c cat dog ufo stringdis
  • 如何使用 Maven 使用私钥通过 SCP 进行部署

    在Windows上使用Maven 通过SCP传输 使用私钥 这似乎是一个非常简单且有记录的过程 但这对我不起作用 在settings xml中
  • 在 2 个 Android 应用程序之间共享 SQLite 数据库?

    我需要在两个应用程序之间共享一个数据库 我知道数据库将在 data data MY PACKAGE databases 上创建 由于包名称不同 当我在任一应用程序上创建数据库时 是否可以定义一个包名称的路径 谢谢 更新 下面描述的方法依赖于
  • Javascript 类与对象,优缺点?

    在我最近的 javascript 程序中 主要是为了乐趣和概念验证 我有很多不同类型的对象 并且每种对象都有相当数量的 实例 所以我想我应该为这些使用类 但是由于它们非常简单 我可以直接直接构造它们而不是使用类 我的意思的例子 I m ma
  • 使用 pyodbc 将 pandas 数据帧高效插入到 MS SQL Server

    我正在尝试使用 pyodbc 将 pandas 数据帧更新插入到 MS SQL Server 我之前使用过类似的方法来进行直插入 但是这次我尝试的解决方案非常慢 有没有比我现有的更简化的方法来完成更新插入 sql connect pyodb
  • ElasticSearch:嵌套查询未返回所需结果

    我是 Elastic Search 的新手 在实现一些查询时遇到一些问题 以下是我的索引结构 cl 1 aliases mappings properties timestamp type date version type long cl
  • write.table 到新目录

    有没有办法使用 write 和 write table 使输出文件位于与工作目录不同的目录中 它尝试在文件名之前设置输出文件的路径 但只收到一条错误消息 如果您使用的是 Windows R如果看到的话就会知道要走出当前目录C 首先 可能还有
  • 如何将 MongoDB 查询转换为字典

    我的 MongoDB 中有一个集合 userId 1234 name Mike userId 1235 name John 我想得到表格的结果 dict userId document 换句话说 我想要一个结果 它是一个字典 其中userI
  • Python mechanize - 两个“提交”类型的按钮

    我有一个用 python 编写的 mechanize 脚本 它填写了一个 Web 表单 并且应该单击 创建 按钮 但有一个问题 表单有两个按钮 一种用于 添加附加文件 一种用于 创建 两者都是 提交 类型 附加按钮是列出的第一个按钮 因此
  • Inception v3 采用 Base64 图像在 google ml 引擎上进行预测

    我正在尝试更改我的初始网络 用 keras 编码 以采用 Base64 图像字符串作为预测的输入 之后 我想将其保存为张量流 pb 文件 网络 因为这是 Google ml 引擎所需要的 正常的预测方法是这样的 img image jpg
  • 编写通用交换函数

    我正在尝试学习 Rust 并想编写一个简单的通用交换函数 fn swap
  • 当属性设置太早时,UIImageView 不显示图像

    我有一个图像想要显示在UIView 在界面生成器中 UIView是根和UIImageView是它的孩子 视图连接到视图控制器的视图出口 图像视图连接到图像视图出口 property nonatomic retain IBOutlet UII
  • Amazon WorkMail 账户无法接收电子邮件

    我之前设置了 AWS WorkMail 组织和电子邮件地址 并且正在使用托管在 Route 53 上的自定义域 这已成功运行 但是现在我已经创建了第二个 WorkMail 地址 我无法接收到它的电子邮件 尽管我可以从它发送电子邮件 我收到以
  • 使用 laravel 和 vuejs 导出 Excel

    我喜欢使用 Laravel 和 Vuejs 导出 Excel 不知何故 代码返回真实值 但无法下载 Excel 文件 如果我执行正常请求 它将下载文件 但在 axios 请求中 它不会导出文件 我正在使用 php artisan make
  • 复制另一个账户拥有的 AMI 时出现问题

    我正在尝试从一个账户 A 复制一个由另一个账户 B 拥有的 AMI 我之前已经构建过此 AMI 帐户 A 具有 AMI 的启动权限 但当我复制时 收到以下错误消息 Images from AWS Marketplace cannot be
  • 在 R 中使用 foreach 读取全局变量

    我正在尝试使用 RStudio 在具有 16 核 CPU 和 64 GB RAM 的 Windows 服务器上运行 foreach 循环 使用 doParallel 包 工作 进程从 for 循环外部复制所有变量 通过运行 foreach
  • 如何生成包含 JSON 结构的下载文件?

    我的控制器中有这个方法 public IActionResult Download return Json context Users 我注意到它生成了正确的 JSON 结构but它在浏览器中呈现为普通文本 我希望将其下载到客户的计算机上