Json.NET - предотвратить повторную сериализацию уже сериализованного свойства [duplicate]

На этот вопрос уже есть ответ здесь:

Newtonsoft Json сериализует класс, одним из свойств которого является JSON [duplicate] 2 ответа

В приложении ASP.NET Web API некоторые из моделей, с которыми я работаю, содержат кусок специального JSON, который полезен только на стороне клиента. На сервере он просто входит и выходит из реляционной базы данных в виде строки. Производительность является ключевым фактором, и кажется, что вообще бессмысленно обрабатывать строковый сервер JSON.

Итак, в C # представьте объект, подобный этому:

new Person
{
    FirstName = "John",
    LastName = "Smith",
    Json = "{ \"Age\": 30 }"
};

По умолчанию Json.NET сериализует этот объект следующим образом:

{
    "FirstName": "John",
    "LastName": "Smith",
    "Json": "{ \"Age\": 30 }"
}

Я хотел бы быть в состоянии поручить Json.NET предположить, чтоJson свойство уже является сериализованным представлением, поэтому оно не должно повторно сериализоваться, и результирующий JSON должен выглядеть следующим образом:

{
    "FirstName": "John",
    "LastName": "Smith",
    "Json": {
        "Age": 30
    }
}

В идеале это работает в обоих направлениях, то есть при размещении представления JSON оно автоматически десериализуется в представлении C # выше.

Каков наилучший механизм для достижения этого с Json.NET? Нужен ли кастомJsonConverter? Существует ли более простой механизм на основе атрибутов? Эффективность имеет значение; весь смысл в том, чтобы пропустить издержки сериализации, которыемог быть немного микрооптимизацией, но ради аргумента давайте предположим, что это не так. (Потенциально будут большие списки с громоздкимиJson свойства возвращаются.)

Ответы на вопрос(3)

Ваш ответ на вопрос