json.net - 在 JsonConverter 中正常写入 json

标签 json.net

我正在编写一个自定义 JsonConverter,但只想更改读取逻辑。写入逻辑应该正常执行。无论我尝试什么方法,我都会遇到堆栈溢出,因为 Json.NET 会直接返回到转换器。有没有办法指定我不想自定义编写器,或者我想推迟回正常的 Json.NET 逻辑?

最佳答案

事实证明,您可以重写 JsonConverter 上的 CanWrite 属性,这将阻止 Json.NET 调用转换器。

public class MyConverter: JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException(); //This will never be called since CanWrite is false
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        //Do your thing
        return new object();
    }

    public override bool CanWrite { get { return false; } }

    public override bool CanConvert(Type objectType)
    {
        //Do your thing
        return true;
    }
}

关于json.net - 在 JsonConverter 中正常写入 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704059/

相关文章:

c# - 将索引属性反序列化为数组

c# - 我可以在属性中指定路径以将类中的属性映射到 JSON 中的子属性吗?

c# - JsonIgnore 属性在 ASP.NET Core 3 中保持序列化属性

c# - 如何使 Json.NET 序列化和反序列化也实现 IDictionary<string, object> 的自定义动态类型的已声明属性?

c# - 是否可以在 T4 模板中使用 NewtonSoft.Json?

json.net - 使用 Newtonsoft.Json 10.0.2 时找不到方法 : BaseJsonMediaTypeFormatter. get_SerializerSettings()

c# - 为什么 Newtonsoft 反序列化器不反序列化智能 getter?

c# - 反序列化只读变量

c# - JSON 反序列化 - 处理可以是数组的属性

c# - 只有一个对象时将 XML 转换为 Json 数组