大佬教程收集整理的这篇文章主要介绍了将 [BsonExtraElements] 展平为键值对 json 输出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 c# 中使用 [BsonExtraElements] 来捕获无法映射到我的类的其他数据。
public class QuestionANSWERClass
{
public String name { get;set;}
[BsonExtraElements]
public Dictionary<String,object> AdditionalData {get; set;}
}
@H_805_2@mongodb 中存储的示例数据
{
name: John
Question1: Answer1
Question2: Answer2
},{
name: Mary
Question3: Answer3
Question4: Answer4
}
在我的控制器中,我获取数据 mongoDB,将其反序列化为我的 QuestionANSWERClass 并将输出作为 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; }
它会将字典键/值序列化为父对象中的属性。因此,如果我们获取您的对象并添加此属性:
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"
}
]
Try it online
以上是大佬教程为你收集整理的将 [BsonExtraElements] 展平为键值对 json 输出全部内容,希望文章能够帮你解决将 [BsonExtraElements] 展平为键值对 json 输出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。