O Json.NET serializa por profundidade e atributo

Por exemplo, temos duas classes

class FooA
{
    [SomeSpecialAttribute]
    public int SomeValueA { get; set; }

    public int SomeValueB { get; set; }

    public int SomeValueC { get; set; }
}

class FooB
{
    public FooA FooA { get; set; }
}

Eu uso o Json.NET, a profundidade máxima é 1. Ao serializar o FooA, ele deve gerar todas as propriedades normalmente, mas ao serializar o FooB, ele deve gerar apenas uma propriedade do FooA com atributo especial. Portanto, somente ao resolver propriedades de referência aninhadas (Profundidade> 0), devemos obter um único campo.

A saída deve ser: {"FooA": {"SomeValueA": "0"}}

Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion