在MongoDB中保存POCO时忽略属性,但在序列化为JSON时不忽略它

乍得·利维

我将以下模型存储在MongoDB中:

public class Person
{
    public ObjectId Id { get; set; }
    public Int PersonId { get; set; }
    public BsonDocument Resume { get; set; } // arbitrary JSON

    [BsonIgnore]
    public string FirstName { get; set; }    // stored elsewhere, 
                                             // populated at runtime
    [BsonIgnore]
    public string LastName { get; set; }     // ditto
}

Resume这是BsonDocument我存储无法标准化为POCO的任意JSON地方(每次出现的情况都大不相同)。

我不想存储此人的名字和姓氏,因为该信息已经存储在SQL数据库中,而且我也不必担心同步更改。所以我用修饰了这些参数[BsonIgnore]当我的应用程序代码Person从MongoDB中检索到时,它将在将其序列化为JSON之前填充FirstNameLastName参数,如下所示:

public ActionResult GetPerson(int id)
{
    var query = New QueryDocument("_id", ObjectId.Parse(id));
    // personCollection is Collection<Person>
    var person = personCollection.FindOne(query);

    var pc = personCache.GetPerson(person.PersonId);

    person.FirstName = pc.FirstName;
    person.LastName = pc.LastName;

    var settings = New JsonWriterSettings() { Outputmode = JsonOutputMode.Strict }
    return Json(person.ToJson(settings), JsonRequestBehavior.AllowGet);
}

但是,生成的JSON缺少FirstNameLastName节点,这显然是因为它们用修饰[BsonIgnore]

有没有一种方法可以告诉MongoDB C#官方驱动程序在序列化为JSON时忽略将参数保存在MongoDB中而不忽略它?

i3arnon

当您使用驱动程序本身将对象序列化为时,我认为这是不可能的json

但是,您可以(可能应该)json.net用来序列化为json这样一来,您BsonIgnore将不会对json序列化产生任何影响,json属性(如JsonIgnore)将不会对您的mongo驱动程序产生影响。

public class Person
{
    [JsonIgnore]
    publis string FullName {get; set;}
    [BsonIgnore]
    public string FirstName { get; set; }
    [BsonIgnore]
    public string LastName { get; set; }
}

我认为这也将是一个更好的设计,因为该资源bson用于数据库,而json(主要)用于网络使用,因此可以使用其他工具来完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

忽略序列化为JSON时引发异常的类成员

来自分类Dev

序列化为JSON时可以忽略serialVersionUID吗?

来自分类Dev

使用RestKit序列化JSON时忽略nil属性

来自分类Dev

从json字符串反序列化为对象时,如何忽略null?

来自分类Dev

如何通过ObjectMapper序列化类时忽略属性

来自分类Dev

序列化JSON时忽略空值

来自分类Dev

发送对象时忽略 JSON 字段(反序列化)

来自分类Dev

杰克逊:父类的属性被忽略:将json反序列化为数据

来自分类Dev

如何在 Angular 7 中忽略序列化为 JSON 的属性

来自分类Dev

将 pojo 字段序列化为 xml 时忽略 xml 标记

来自分类Dev

将包含对象属性的poco序列化为Json

来自分类Dev

PowerShell,序列化为JSON时出错

来自分类Dev

序列化为XML时,在列表中保留空值

来自分类Dev

如何使用Jackson将反序列化的JSON反序列化为忽略键的对象?

来自分类Dev

反序列化可能无法解析其类型的特定属性时忽略错误

来自分类Dev

使用JSON.Net序列化数组时忽略重复项

来自分类Dev

使用PyYAML序列化对象时,如何忽略成员?

来自分类Dev

序列化 xsd 生成的类时忽略原始类

来自分类Dev

序列化为JSON时如何将属性分组为子对象

来自分类Dev

序列化为JSON时如何将属性分组为子对象

来自分类Dev

将EF模型序列化为Json时的循环引用

来自分类Dev

序列化为JSON时排除集合中的特定项目

来自分类Dev

将JSON反序列化为对象时出错

来自分类Dev

将数据序列化为json文件时出错

来自分类Dev

将 JSON 反序列化为 List<T> 时出错

来自分类Dev

忽略序列化/反序列化的[JsonIgnore]属性

来自分类Dev

忽略空值当序列化JSON

来自分类Dev

当JSON使用日期作为属性名称时,如何使用GSON将JSON反序列化为Java Object?

来自分类Dev

序列化具有非原始值的字典键时,System.Text.Json.JsonSerializer忽略DictionaryKeyPolicy

Related 相关文章

  1. 1

    忽略序列化为JSON时引发异常的类成员

  2. 2

    序列化为JSON时可以忽略serialVersionUID吗?

  3. 3

    使用RestKit序列化JSON时忽略nil属性

  4. 4

    从json字符串反序列化为对象时,如何忽略null?

  5. 5

    如何通过ObjectMapper序列化类时忽略属性

  6. 6

    序列化JSON时忽略空值

  7. 7

    发送对象时忽略 JSON 字段(反序列化)

  8. 8

    杰克逊:父类的属性被忽略:将json反序列化为数据

  9. 9

    如何在 Angular 7 中忽略序列化为 JSON 的属性

  10. 10

    将 pojo 字段序列化为 xml 时忽略 xml 标记

  11. 11

    将包含对象属性的poco序列化为Json

  12. 12

    PowerShell,序列化为JSON时出错

  13. 13

    序列化为XML时,在列表中保留空值

  14. 14

    如何使用Jackson将反序列化的JSON反序列化为忽略键的对象?

  15. 15

    反序列化可能无法解析其类型的特定属性时忽略错误

  16. 16

    使用JSON.Net序列化数组时忽略重复项

  17. 17

    使用PyYAML序列化对象时,如何忽略成员?

  18. 18

    序列化 xsd 生成的类时忽略原始类

  19. 19

    序列化为JSON时如何将属性分组为子对象

  20. 20

    序列化为JSON时如何将属性分组为子对象

  21. 21

    将EF模型序列化为Json时的循环引用

  22. 22

    序列化为JSON时排除集合中的特定项目

  23. 23

    将JSON反序列化为对象时出错

  24. 24

    将数据序列化为json文件时出错

  25. 25

    将 JSON 反序列化为 List<T> 时出错

  26. 26

    忽略序列化/反序列化的[JsonIgnore]属性

  27. 27

    忽略空值当序列化JSON

  28. 28

    当JSON使用日期作为属性名称时,如何使用GSON将JSON反序列化为Java Object?

  29. 29

    序列化具有非原始值的字典键时,System.Text.Json.JsonSerializer忽略DictionaryKeyPolicy

热门标签

归档