小编Mas*_*pud的帖子

System.Text.Json 如何让转换器利用默认的 Write() 行为

我为自定义转换器一侧编写了一个system.text.jsonRead()自定义转换器。然而,另一方面Write(),我只想使用默认的写入功能来序列化对象,而不必手动进行对象的序列化。我开始于...

public override void Write(Utf8JsonWriter writer, Customer value, JsonSerializerOptions options)
{
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

JsonSerializer.Serialize(Customer)我本来希望我可以简单地使用方法中的标准Write()。就像是...

public override void Write(Utf8JsonWriter writer, Customer value, JsonSerializerOptions options)
{
    return JsonSerializer.Serialize(value);
}
Run Code Online (Sandbox Code Playgroud)

然而,这种情况似乎正在回归null。我想我所做的只是嵌套相同的行为。

作为绝望的标志,我还尝试删除该Write()方法,希望标准功能能够填补该空白,但我收到以下构建错误消息...

CS0534  'CustomerJsonConverter' does not implement inherited abstract member
'JsonConverter<Customer>.Write(Utf8JsonWriter, Customer, JsonSerializerOptions)'
Run Code Online (Sandbox Code Playgroud)

CanReadNewtonsoft.Json 具有名为且CanWrite可以设置为 False 的属性。这些强制转换器分别在反序列化和序列化时使用默认转换器功能。

我希望 System.Text.Json 中有类似的东西?


更新1

使用@Guilherme的建议......它部分有效。但是,该方法给出了不完整的 Json 对象。

作为背景,当我反序列化原始源 Json 时,我必须处理原始 Json (我无法控制)的情况,它有一个可以是空""、对象{ "key": "value" …

c# json converters system.text.json

5
推荐指数
1
解决办法
4619
查看次数

标签 统计

c# ×1

converters ×1

json ×1

system.text.json ×1