我是否可以创建一个 POST 端点,该端点接受我不知道属性确切名称的 JSON 的 JSON?

Can I create a POST endpoint which accepts a JSON for which I do not know the name of the exact name of properties?

提问人:just-an-average-programmer 提问时间:11/15/2023 最后编辑:Jacopo Sciampijust-an-average-programmer 更新时间:11/15/2023 访问量:64

问:

我希望传入一个具有以下结构的数据对象(取自 ag-grid getFilterModel() 方法):

{
property1: {
          type: "string",
          values: ["test1", "test2"]
          }
property2: ... (etc.)
...
}

我不知道属性的显式名称,但出于我的端点的目的,我不需要。目前,我有一些工作,但这与硬编码对象有关。在这里,我在 HTTP-POST 方法中显式定义了属性。

发帖方式:

[HttpPost]
public void testAPI(MyTestObject test){

/// do something

}

MyTestObject.cs:

public class MyTestObject{
    public GenericProperty heights {get; set;} ;

    public GenericProperty weights {get; set;} ; 

   // ^all the properties will be of genericProperty type how can I avoid explicitly listing them?


}

泛型属性.cs

public class GenericProperty{
     public string type {get; set;} ;

     public string[] values { get; set;}
}

Json 对象将只有 GenericProperty 类型的属性,有没有更好的方法来定义 MyTestObject,而无需显式列出属性的名称?

C# asp.net ASP.NET-WEB-API

评论

1赞 Daniel A. White 11/15/2023
什么版本的 asp.net 和 .net?
1赞 just-an-average-programmer 11/15/2023
目标框架是 .NET Framework 4.6.1
1赞 Yong Shun 11/15/2023
也许将预期的请求正文参数声明为 ?在函数体中,应获取以下值: 。这是安全的方法,可以避免在找不到密钥时出现问题。Dictionary<string, object>test.TryGetValue("<key>", out object value)
1赞 just-an-average-programmer 11/15/2023
不幸的是,这似乎行不通
0赞 just-an-average-programmer 11/16/2023
我觉得我们可以为此使用JSON序列化程序,但我不确定如何在不知道变量名称的情况下进行序列化。

答: 暂无答案