将 JSON 反序列化为动态对象或 C# 中的 class

Deserialize JSON to a dynamic object or a class in C#

我正在尝试将 JSON 反序列化为一个对象,以便将其添加到弹性搜索中。 JSON 项目中可以有许多不同的对象类型,所以我希望函数是动态的。

首先,我正在序列化从 EF Core 上下文中获取的数据

var serializedObject = JsonConvert.SerializeObject(document, Formatting.None,
                       new JsonSerializerSettings()
                       {
                           ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                       });

接下来我想反序列化为一个对象。例如,如果我有

public class EValues 
{
    public dynamic values { get; set; }
}

var test =  JsonConvert.DeserializeObject<EValues>(serializedObject.ToString());

我希望将 JSON 反序列化为以下内容:

{
   "values":{
      "StudentId":"60712555-ff1d-4a3e-8c81-08d9c2fc4423",
      "Student":{
         "Name":"string",
         "Country":"string",
         "Street":"string"
      }
   }
}

serializedObject JSON 我实际上是在尝试反序列化:

{
   "StudentId":"60712555-ff1d-4a3e-8c81-08d9c2fc4423",
   "Student":{
      "Name":"string",
      "Country":"string",
      "Street":"string"
   }
}

你可以这样做:

var test = new EValues { 
    values = JsonConvert.DeserializeObject<dynamic>(serializedObject) 
};

对应于 EValues 的 JSON 将有一个额外的嵌套层级 { "values" : {} } 在您的 serializedObject JSON.[=14 中不存在=]