我听说Json.NET比DataContractJsonSerializer更快,想试一试......
但我在JsonConvert上找不到任何采用流而不是字符串的方法.
例如,为了在WinPhone上反序列化包含JSON的文件,我使用以下代码将文件内容读入字符串,然后反序列化为JSON.在我的(非常临时)测试中,使用DataContractJsonSerializer直接从流中反序列化似乎要慢4倍...
// DCJS
DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants));
Constants constants = (Constants)dc.ReadObject(stream);
// JSON.NET
string json = new StreamReader(stream).ReadToEnd();
Constants constants = JsonConvert.DeserializeObject<Constants>(json);
Run Code Online (Sandbox Code Playgroud)
我做错了吗?
我正在尝试动态创建 csv 文件并将流输出到浏览器。
这是我的 api 端点:
[System.Web.Http.HttpGet]
[System.Web.Http.Route("export-to-csv")]
public FileStreamResult ExportDeposits([FromUri(Name = "")]DepositSearchParamsVM depositSearchParamsVM)
{
if (depositSearchParamsVM == null)
{
depositSearchParamsVM = new DepositSearchParamsVM();
}
var records = _DepositsService.SearchDeposits(depositSearchParamsVM);
var result = _DepositsService.WriteCsvToMemory(records);
var memoryStream = new MemoryStream(result);
return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "export.csv" };
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务方法:
public byte[] WriteCsvToMemory(IEnumerable<DepositSummaryVM> records)
{
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer))
{
csv.WriteRecords(records); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 dotnet core 作为持久函数的一部分编写 Azure Function v2。我想创建一个活动函数,它从 blob 存储中读取文件,对其进行解密并返回解密后的字节流。我可以创建解密的流,并尝试像这样返回流:
[FunctionName("Decrypt")]
public static async Task<IActionResult> Run(
[ActivityTrigger] string blobName,
ILogger log,
ExecutionContext context)
{
// get stream from blob storage
var bytes = await GetDecryptedByteArrayAsync(blobStream);
return new FileContentResult(bytes, "application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但是当我尝试阅读这样的回复时:
var provisioningArchive = await
ctx.CallActivityAsync<FileContentResult>("Decrypt", encryptedBlobName);
Run Code Online (Sandbox Code Playgroud)
我收到以下异常:
Newtonsoft.Json.JsonSerializationException:无法找到用于 Microsoft.AspNetCore.Mvc.FileContentResult 类型的构造函数。一个类应该有一个默认构造函数、一个带参数的构造函数或一个用 JsonConstructor 标记的构造函数
我怎样才能让它反序列化成一个代表流的对象?
stream azure .net-core azure-functions azure-durable-functions