JObject到具有未知类型结构的匿名对象| C#

JObject到具有未知类型结构的匿名对象| C#,c#,asp.net,object,json.net,C#,Asp.net,Object,Json.net,我正在尝试将作业对象转换为对象。 我有一个带有ASP.NET framework的WEB-API,其中我得到一个具有Object属性的请求对象。 此对象属性具有完全未知的结构,可以具有不同的属性或子对象(这取决于发送系统)。我的问题是将这些JObject解析/转换为对象 匿名对象的序列化非常简单,因为对象定义很清楚,但是我怎么能反过来呢 我有以下控制器: [HttpPost] [Route("insert")] public IHttpActionResult Insert(RequestObj

我正在尝试将作业对象转换为对象。 我有一个带有ASP.NET framework的WEB-API,其中我得到一个具有Object属性的请求对象。 此对象属性具有完全未知的结构,可以具有不同的属性或子对象(这取决于发送系统)。我的问题是将这些JObject解析/转换为对象

匿名对象的序列化非常简单,因为对象定义很清楚,但是我怎么能反过来呢

我有以下控制器:

[HttpPost]
[Route("insert")]
public IHttpActionResult Insert(RequestObject ro)
{
}
此控制器接收以下JSON正文:

{
 "SystemName":"S1_K3",
 "MetaInformation":{
  "Prop1":"X1",
  "Prop3": 12,
  "X1":{
   "User":"XYZ",
   "Session":4
  }
 }
}
此JSON主体在我的代码中定义为一个类,如下所示:

public class RequestObject {
 public string SystemName { get; set;}
 public object MetaInformation { get; set;}
} 
object metaInformation = new{
 Prop1="X1",
 Prop3=12,
 X1=new{
  User="XYZ", 
  Session=4
 }
};
正如您所看到的,元信息来自类型“object”,因此可以用json中提供的信息填充它。但当我在控制器内接收到对象时,属性元信息是JObject类型的对象。 如何实现我的目标如下所示:

public class RequestObject {
 public string SystemName { get; set;}
 public object MetaInformation { get; set;}
} 
object metaInformation = new{
 Prop1="X1",
 Prop3=12,
 X1=new{
  User="XYZ", 
  Session=4
 }
};
请记住,我不知道运行时的对象结构


谢谢所有能帮忙的人

我找到了解决问题的方法,因为每个系统都可以向我发送我创建的其他信息
IEnumerable
属性而不是我的对象。
因此,每个系统都可以向我发送它们的元信息,并且类型对于序列化和反序列化来说是明确的

JObject
是一个对象,在编译时您不知道它的属性。这有用吗?如果您可以将其序列化为一些众所周知的结构,如xml或json,那么有一些流行的库可以对它们进行解析和反序列化。例如,你可以得到一本字典,或者有一些预定义的选项。最坏的情况是有
dynamic
type,但如果可能的话可以避免(无编译时检查)。如果需要静态/强类型的对象,可以使用
JsonConverter
s。否则,
dynamic
JObject
应该是好的。这就是你要问的吗?我已经更新了描述,所以现在应该更容易理解了。