c# - 如何生成包含 JSON 结构的文件以供下载?
问题描述
我的控制器中有这个方法。
public IActionResult Download()
{
return Json(_context.Users);
}
我注意到它生成了正确的 JSON 结构,但它在浏览器中呈现为普通文本。我希望将其下载到客户的计算机上。我怎么做?
我不确定是否应该让我的对象像这样以某种方式流式传输,或者可能在我的硬盘驱动器上创建一个文件并像这样提供它。
我找不到任何让我印象深刻的东西,就像我们在 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");
}
Startup
如果您在using中设置了特殊的 json 序列化程序设置,.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");
}
推荐阅读
- javascript - 如何更新/删除 mongo db 中嵌入数组中的文档?
- flame - 哪个火焰起点(游戏或base_game)用于点击2D静态类型冒险游戏?
- excel - Excel VBA:需要更改我的代码以复制文本格式的粘贴值
- c++ - 有人可以向我解释 uint64_t 到底在做什么吗?
- swift - 谁能帮助我解决在 Xcode 上使用 swift 从 Firebase 检索数据的问题?“源文件中的编辑器占位符”
- angular - 在 Angular 中使用 ngx-datatable 时出现 Httpclient 错误
- python - 如何在程序运行时创建一个新对象(Python、pygame)
- javascript - 从基本构造函数继承时,Object.defineProperty() 是否优于直接设置构造函数
- python - Python - SQLite For 循环操作错误
- html - 子项增长容器而不是溢出