Json.NET: evitar volver a serializar una propiedad ya serializada [duplicar]
Esta pregunta ya tiene una respuesta aquí:
Newtonsoft Json serializa una clase donde una de las propiedades es JSON [duplicado] 2 respuestasEn una aplicación ASP.NET Web API, algunos de los modelos con los que estoy trabajando contienen una porción de JSON ad-hoc que es útil solo en el lado del cliente. En el servidor, simplemente entra y sale de una base de datos relacional como una cadena. El rendimiento es clave, y parece inútil procesar el lado del servidor de cadena JSON.
Entonces, en C #, imagine un objeto como este:
new Person
{
FirstName = "John",
LastName = "Smith",
Json = "{ \"Age\": 30 }"
};
Por defecto, Json.NET serializará este objeto así:
{
"FirstName": "John",
"LastName": "Smith",
"Json": "{ \"Age\": 30 }"
}
Me gustaría poder indicarle a Json.NET que asuma queJson
La propiedad ya es una representación serializada, por lo que no debería volver a serializarse, y el JSON resultante debería verse así:
{
"FirstName": "John",
"LastName": "Smith",
"Json": {
"Age": 30
}
}
Idealmente, esto funciona en ambas direcciones, es decir, al PUBLICAR la representación JSON, se deserializará automáticamente a la representación C # anterior.
¿Cuál es el mejor mecanismo para lograr esto con Json.NET? ¿Necesito una costumbreJsonConverter
? ¿Existe un mecanismo más simple basado en atributos? La eficiencia importa; todo el punto es omitir la sobrecarga de serialización, quepodría ser un poco de micro-optimización, pero por el bien de los argumentos, supongamos que no lo es. (Posiblemente habrá grandes listas con voluminososJson
propiedades que se devuelven.)