c# - 如何生成包含 JSON 结构的要下载的文件?

我的 Controller 中有这个方法。

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

我注意到它生成了正确的 JSON 结构但是它在浏览器中呈现为普通文本。我想把它下载到客户的电脑上。我该怎么做?

我不确定是否应该让我的对象以某种方式流式传输 like this或者在我的硬盘驱动器上创建一个文件并提供给它 like this .

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

最佳答案

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

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");
}

如果您使用 .AddJsonOptions()Startup 中设置特殊的 json 序列化器设置,您希望将它们用作 ASP.NET 框架使用它们在 Json 方法中。在 Controller 中注入(inject)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");
}

https://stackoverflow.com/questions/54543808/

相关文章:

python - MPI4Py comm.Barrier() 没有阻塞 MSMPI?

reactjs - 将映射数据传递给 Material-UI 模态

react-native - 如何从 react-native 代码中禁用 Android 默认 "

python - 替换 Pandas 数据框中的点

angular - NGRX Store adapter.updateone 不更改属性以进行更改检

macos - Homebrew/brew 在安装 gnuplot 时没有选择选项

python-3.x - 为什么在 python 中允许 for else

php - 如何仅在 Laravel 中出现日期时才验证日期

google-maps - 如何使 flutter google map 中的标记随相机而不是 ma

python - Django 获取一个月中每一天的对象数