gpt4 book ai didi

c# - 带有自定义JsonConverter的Json.NET异步支持

转载 作者:行者123 更新时间:2023-12-02 09:13:11 26 4
gpt4 key购买 nike

Json.NET version 10 added support to async序列化。
Version 11为通用JsonConverter<T>添加了支持。

问题是JsonConverter<T>和以前的JsonConverter仅支持同步方法。

即:public override void WriteJson(...)

传递给JsonWriterWriterJson支持同步和异步方法,例如:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com