C# ExpandoObject特殊密钥的自定义json.net序列化程序/反序列化程序

C# ExpandoObject特殊密钥的自定义json.net序列化程序/反序列化程序,c#,serialization,json.net,deserialization,C#,Serialization,Json.net,Deserialization,我想用非平凡值序列化和反序列化ExpandooObject。 ExpandoObject的某些值包含具有指向循环引用的属性的对象 我为这些对象编写了自定义序列化器/反序列化器。但是,这些对象出现在ExpandoObject中的许多位置(也嵌套,而不仅仅是在根级别)。但他们总是有相同的钥匙!我希望反序列化程序为某个键的ExpandooObject的每个属性使用我的自定义反序列化程序 例如: { "a": 12.5, "b": "hello world", "special"

我想用非平凡值序列化和反序列化ExpandooObject。 ExpandoObject的某些值包含具有指向循环引用的属性的对象

我为这些对象编写了自定义序列化器/反序列化器。但是,这些对象出现在ExpandoObject中的许多位置(也嵌套,而不仅仅是在根级别)。但他们总是有相同的钥匙!我希望反序列化程序为某个键的ExpandooObject的每个属性使用我的自定义反序列化程序

例如:

{
    "a": 12.5,
    "b": "hello world",
    "special": { /* ... */ },
    "c": -4,
    "d":
        {
            "x": "test",
            "special":  { /* ... */ },
            "y": 152
        },
    "e": 9053
}
我想用我的自定义反序列化程序将每个特殊属性反序列化到我的类。其他一切都应该由默认的反序列化程序处理


我处理这类问题的方法正确吗?如果是,我如何使用JSON.NET实现这一点?

显示序列化程序的代码以及如何调用它。我显式调用它是为了在SpecialObject上进行测试。json输出与所需的结构匹配。反序列化也起作用。我没有通过序列化程序运行整个ExpandooObject。这是的副本吗?