将 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 中不存在=]
我正在尝试将 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 中不存在=]