在 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
property 已经是序列化表示,因此它不应该重新序列化,并且生成的 JSON 应如下所示:
{
"FirstName": "John",
"LastName": "Smith",
"Json": {
"Age": 30
}
}
理想情况下,这在两个方向上都有效,即当 POST JSON 表示时,它将自动反序列化为上面的 C# 表示。
使用 Json.NET 实现此目的的最佳机制是什么?我需要定制吗JsonConverter
?有没有更简单的基于属性的机制?效率很重要;重点是跳过序列化开销,这could是一个微观优化,但为了论证起见,我们假设它不是。 (可能会有大量的大列表Json
正在返回的属性。)