在强类型POCO类中表示JSON

时间:2014-08-27 18:54:17

标签: c# asp.net-mvc json

我在C#中有一个代表JSON对象的POCO类:

public int id {get; set;}
public string name {get; set;}
public string description {get; set;}

JSON

{ 
    "id" : 1,
    "name" : "name",
    "description" : "description"
}

现在json将添加这些属性:

{
    "property_1" : "value_1",
    "property_2" : "value_2",
    "property_3" : "value_3"
//etc
}

可能只有0个属性和所需数量,但它们都会被命名为property_和一个数字。 所以对于类我想要某种List<>而不是单独对每个属性进行硬编码,但后来又返回了Json对象(我正在使用MVC)我想要拆分{{ 1}}到单个对象中,我该怎么做?

而不是:

List<>

我想:

return Json(property_1, property_2, property_3);

2 个答案:

答案 0 :(得分:3)

如果您使用Json.NET进行JSON序列化,则可以使用[JsonExtensionData]属性捕获尚未编码的属性。从Json.NET 5.0.8开始,此属性会影响序列化和反序列化,以确保您的POCO对象支持往返。

实际上,我将这个属性放在一个抽象基类中的一个字段上,我的所有模型类都来自这个类:

ExtensibleJsonObject

答案 1 :(得分:1)

您可以编写自己的自定义MediaTypeFormatter并将其插入标准JsonFormatter前面的HttpConfiguration.Formatters集合,或者扩展标准版本并完全替换它。 (我建议前者。)

MediaTypeFormatters允许您在进入原始流时访问它,基本上您可以使用所有JSON.NET对序列化和反序列化执行任何操作。