创建动态类以接受动态JSON

创建动态类以接受动态JSON,json,asp.net-web-api,Json,Asp.net Web Api,我有一个web api端点,它接收JSON并将其序列化为对象。非常基本和普通的东西。但是,我需要接受自定义的用户定义字段。例如,开发人员可能希望为“account#”添加一个自定义字段,并通过API传递该字段。如果我不知道名称,我就无法在类中定义字段。我需要支持无限字段,所以我不能简单地为custom1、custom2、custom2等创建字段 我想我的JSON应该是这样的。。。其中,自定义标签标识字段标签: ... "custom_fields": { "custom_label_90":

我有一个web api端点,它接收JSON并将其序列化为对象。非常基本和普通的东西。但是,我需要接受自定义的用户定义字段。例如,开发人员可能希望为“account#”添加一个自定义字段,并通过API传递该字段。如果我不知道名称,我就无法在类中定义字段。我需要支持无限字段,所以我不能简单地为custom1、custom2、custom2等创建字段

我想我的JSON应该是这样的。。。其中,自定义标签标识字段标签:

...  
"custom_fields": {
"custom_label_90": 49,
"custom_label_83": [ 28, 29, 30 ],
"custom_label_89": "2012/05/21"   
},   
...
我该如何设置一个动态类来接受这个动态JSON呢


我一直在谷歌搜索,找不到任何使用自定义字段的示例。

您的post方法可以接受动态作为参数:

public HttpResponseMessage Post(dynamic obj)

这将接受您发送的每个json。

Saykor的回答可能是正确的。但是,我已经有很多业务对象要处理,我只希望自定义字段是动态的。另外,我希望Web API帮助页面使用示例JSON生成。因此,使方法动态化对我来说不太合适

我最后所做的对一些人来说可能是显而易见的。我在类上创建了一个属性,它是一个字典。当我运行帮助页面时,它生成的示例JSON看起来正是我所需要的。我还没有对此进行测试,但我认为它会将JSON序列化到字典中

这是VB中的属性,但它也可以轻松地在C#中使用dynamic


你的标题需要为将来的问题做一些修改,不要只使用标签:)谢谢你的回复。经过大量测试,我最终发布了有效的答案。这可能也可以,但它可能不会生成API帮助页面。
    Private _customfields As Dictionary(Of String, String)
    <DataMember(EmitDefaultValue:=False, IsRequired:=False, Order:=11)> _
    Public Property customfields() As Dictionary(Of String, String)
        Get
            Return Me._customfields
        End Get
        Set(ByVal value As Dictionary(Of String, String))
            Me._customfields = value
        End Set
    End Property
 "customfields": {
  "sample string 1": "sample string 2",
  "sample string 3": "sample string 4",
  "sample string 5": "sample string 6"
}