C#MongoDB反序列化id属性

时间:2016-07-22 12:59:47

标签: c# json mongodb

我有一个看起来像这样的课程:

public class Object
{
    [JsonConverter(typeof(ObjectIdConverter))]
    public ObjectId Id { get; set; }
    public List<Record> Records { get; set; }
}

public class Record
{
    [JsonConverter(typeof(ObjectIdConverter))]
    public ObjectId Id { get; set; }
    public Dictionary<string, object> Values { get; set; }
}

我试图反序列化以下json:

{{
  "Id": "5791fad6fcef4434d0318d69",
  "Values": {
    "Name": "some name....",
    "Account": {
      "Value": "123",
      "Name": "Test Account"
    }
  }
}}

使用mongodb c#驱动程序:

var record = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<Record>(BsonDocument.Parse(value.ToString()));

但我一直收到错误:元素&#39; Id&#39;与Record类的任何字段或属性都不匹配。

有关为什么它不会识别id属性的任何想法?

2 个答案:

答案 0 :(得分:2)

事实证明,如果将属性名称更改为以下内容,则对象将被正确反序列化:

public ObjectId _id { get; set; }

答案 1 :(得分:-1)

尝试将BsonId属性添加到您的Id字段。

public class Object
{
    [BsonId]
    [JsonConverter(typeof(ObjectIdConverter))]
    public ObjectId Id { get; set; }

    public List<Record> Records { get; set; }
}