程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将 [BsonExtraElements] 展平为键值对 json 输出大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决将 [BsonExtraElements] 展平为键值对 json 输出?

开发过程中遇到将 [BsonExtraElements] 展平为键值对 json 输出的问题如何解决?下面主要结合日常开发的经验,给出你关于将 [BsonExtraElements] 展平为键值对 json 输出的解决方法建议,希望对你解决将 [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,请注明来意。
标签:json输出