将 [BsonExtraElements] 展平为键值对 json 输出
Flatten [BsonExtraElements] to key value pair json output
我在 c# 中使用 [BsonExtraElements] 来捕获无法映射到我的 class 的额外数据。
public class QuestionAnswerClass
{
public string Name { get;set;}
[BsonExtraElements]
public Dictionary<string,object> AdditionalData {get; set;}
}
示例数据存储在mongodb
{
Name: John
Question1: Answer1
Question2: Answer2
},
{
Name: Mary
Question3: Answer3
Question4: Answer4
}
在我的控制器中,我获取数据 mongoDB,将其反序列化为我的 QuestionAnswerClass 并 return 输出为 JsonResult。
var client = new MongoClient("Credentials here");
var database = client.GetDatabase("db");
var results = database.GetCollection<QuestionAnswerClass>("QuestionAnswers").AsQueryable().ToList();
return new JsonResult(results);
Json输出如下
[
{
Name: John
AdditionalData: {
Question1: Answer1,
Question2: Answer2
},
{
Name: Mary
AdditionalData: {
Question3: Answer3,
Question4: Answer4
},
}
]
问题:如何将 AdditionalData 的输出展平为它自己的键值对。我想要的示例输出如下
[
{
Name: John,
Question1: Answer1,
Question2: Answer2
},
{
Name: Mary,
Question3: Answer3,
Question4: Answer4
}
]
System.Text.Json(以及 JSON.NET 供任何人阅读)支持名为 [JsonExtensionData]
.
的属性
您可以在您的模型中这样声明它:
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
并且它将字典 key/values 序列化为父对象中的属性。因此,如果我们获取您的对象并添加此属性:
public class QuestionAnswerClass
{
public string Name { get;set;}
[JsonExtensionData]
[BsonExtraElements]
public Dictionary<string,object> AdditionalData {get; set;}
}
我们将得到预期的输出:
[
{
"Name": "John",
"Question1": "Answer1",
"Question2": "Answer2"
},
{
"Name": "Mary",
"Question3": "Answer3",
"Question4": "Answer4"
}
]
我在 c# 中使用 [BsonExtraElements] 来捕获无法映射到我的 class 的额外数据。
public class QuestionAnswerClass
{
public string Name { get;set;}
[BsonExtraElements]
public Dictionary<string,object> AdditionalData {get; set;}
}
示例数据存储在mongodb
{
Name: John
Question1: Answer1
Question2: Answer2
},
{
Name: Mary
Question3: Answer3
Question4: Answer4
}
在我的控制器中,我获取数据 mongoDB,将其反序列化为我的 QuestionAnswerClass 并 return 输出为 JsonResult。
var client = new MongoClient("Credentials here");
var database = client.GetDatabase("db");
var results = database.GetCollection<QuestionAnswerClass>("QuestionAnswers").AsQueryable().ToList();
return new JsonResult(results);
Json输出如下
[
{
Name: John
AdditionalData: {
Question1: Answer1,
Question2: Answer2
},
{
Name: Mary
AdditionalData: {
Question3: Answer3,
Question4: Answer4
},
}
]
问题:如何将 AdditionalData 的输出展平为它自己的键值对。我想要的示例输出如下
[
{
Name: John,
Question1: Answer1,
Question2: Answer2
},
{
Name: Mary,
Question3: Answer3,
Question4: Answer4
}
]
System.Text.Json(以及 JSON.NET 供任何人阅读)支持名为 [JsonExtensionData]
.
您可以在您的模型中这样声明它:
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
并且它将字典 key/values 序列化为父对象中的属性。因此,如果我们获取您的对象并添加此属性:
public class QuestionAnswerClass
{
public string Name { get;set;}
[JsonExtensionData]
[BsonExtraElements]
public Dictionary<string,object> AdditionalData {get; set;}
}
我们将得到预期的输出:
[
{
"Name": "John",
"Question1": "Answer1",
"Question2": "Answer2"
},
{
"Name": "Mary",
"Question3": "Answer3",
"Question4": "Answer4"
}
]