我的 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 默认 "
angular - NGRX Store adapter.updateone 不更改属性以进行更改检
macos - Homebrew/brew 在安装 gnuplot 时没有选择选项
python-3.x - 为什么在 python 中允许 for else
php - 如何仅在 Laravel 中出现日期时才验证日期