Json.NET version 10 added support to async序列化。
Version 11添加了对通用JsonConverter<T>
的支持。
问题在于JsonConverter<T>
和之前的JsonConverter
仅支持同步方法。
即:public override void WriteJson(...)
传递给JsonWriter
的{{1}}支持同步和异步方法,如:
WriterJson
和writer.WritePropertyNameAsync()
但由于writer.WritePropertyName()
本身是同步的,因此这里不能使用async选项。
是否可以使用异步方法定制WriteJson
?
答案 0 :(得分:0)
此代码在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;
}
}