Json.NET version 10 added support to async序列化。
Version 11为通用JsonConverter<T>
添加了支持。
问题是JsonConverter<T>
和以前的JsonConverter
仅支持同步方法。
即:public override void WriteJson(...)
传递给JsonWriter
的WriterJson
支持同步和异步方法,例如:writer.WritePropertyNameAsync()
和writer.WritePropertyName()
但是由于WriteJson
本身是同步的,因此async选项在此处不可用。
是否可以使用异步方法自定义JsonConverter
?
最佳答案
这段代码在dotnet core 2.1中对我有用:
public static async Task<string> SerializeJsonAsync(object value)
{
using (var ms = new MemoryStream())
using (var sr = new StreamReader(ms))
using (var sw = new StreamWriter(ms, new UTF8Encoding(false), 1024, true))
using (var jtw = new JsonTextWriter(sw) { Formatting = Formatting.None })
{
var js = new JsonSerializer();
js.Serialize(jtw, value);
await jtw.FlushAsync();
await jtw.CloseAsync();
ms.Position = 0;
string s = await sr.ReadToEndAsync();
return s;
}
}
关于c# - 带有自定义JsonConverter的Json.NET异步支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49610328/