Json.NET - evita reinicializar uma propriedade já serializada [duplicado]
Esta pergunta já tem uma resposta aqui:
Newtonsoft Json serializa uma classe em que uma das propriedades é JSON [duplicado] 2 respostasEm um aplicativo de API da Web do ASP.NET, alguns dos modelos com os quais estou trabalhando contêm um pedaço de JSON ad-hoc que é útil apenas no lado do cliente. No servidor, ele simplesmente entra e sai de um banco de dados relacional como uma string. O desempenho é fundamental e parece inútil processar o lado do servidor de string JSON.
Então, em C #, imagine um objeto como este:
new Person
{
FirstName = "John",
LastName = "Smith",
Json = "{ \"Age\": 30 }"
};
Por padrão, o Json.NET serializará este objeto assim:
{
"FirstName": "John",
"LastName": "Smith",
"Json": "{ \"Age\": 30 }"
}
Eu gostaria de poder instruir o Json.NET a assumir que oJson
A propriedade já é uma representação serializada, portanto, não deve ser serializada novamente, e o JSON resultante deve ficar assim:
{
"FirstName": "John",
"LastName": "Smith",
"Json": {
"Age": 30
}
}
Idealmente, isso funciona nas duas direções, ou seja, ao POSTar a representação JSON, ela será desserializada automaticamente para a representação C # acima.
Qual é o melhor mecanismo para conseguir isso com o Json.NET? Preciso de um costumeJsonConverter
? Existe um mecanismo mais simples baseado em atributos? A eficiência é importante; o ponto principal é pular a sobrecarga de serialização, quepoderia ser um pouco de micro-otimização, mas pelo bem do argumento, vamos supor que não. (Haverá potencialmente grandes listas comJson
propriedades sendo retornadas.)