2016-07-22 44 views
1

我有一個類,看起來像這樣:id屬性的C#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())); 

但我不斷收到錯誤:元素'Id'與任何字段或類Re的屬性不匹配線。

任何想法爲什麼它不會識別id屬性?

回答

2

事實證明,如果你改變了屬性名稱下面則該對象正確反序列化:

public ObjectId _id { get; set; } 
-1

嘗試將BsonId屬性添加到您的Id字段。

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

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

不幸的是不起作用。我已經將BsonId屬性添加到對象和記錄類,並出現相同的錯誤 – EdB

+0

我沒有得到它,如何還應該使用[BsonId]時使用解串器?這不可能嗎? Big gotcha。這將需要我從我的對象中刪除所有[BsonId],然後將所有ID字段從「Id」重命名爲「_id」,這就是從開始就使用[BsonId]的原因,我希望我的ID字段能夠被標記爲_id。 – Bassebus

相關問題