首页 > 解决方案 > Mongodb:将 c# 对象列表存储到 mongo

问题描述

我有具有 type 属性的 ac# 类List<object>

public class Result
{
    public int Type { get; set; }
    public string Key { get; set; }
    public string Table{get;set;}
    public List<object> TableHeaderKey {get;set;}
    public List<LocationVariance> locationVariance { get; set; }
}

我正在尝试将此保存到 mongo 集合

public async Task<T> Add<T>(T obj, string collectionName)
{
    var session = __client.StartSession();
    var document = obj.ToBsonDocument();
    session.StartTransaction();
    var collection = __database.GetCollection<BsonDocument>(collectionName);
    await collection.InsertOneAsync(document);
    session.CommitTransaction();            
}

这些值存储在 db 中,但属性 TableHeaderKey 的值存储如下。

"TableHeaderKey" : [
                            {
                                "_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
                                "_v" : {
                                    "Item" : {
                                        "_t" : "JArray",
                                        "_v" : [
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            }
                                        ]
                                    }
                                }
                            },
                            {
                                "_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
                                "_v" : {
                                    "Description" : {
                                        "_t" : "JArray",
                                        "_v" : [
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            }
                                        ]
                                    }
                                }
                            },
                            {
                                "_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
                                "_v" : {
                                    "Delivery" : {
                                        "_t" : "JArray",
                                        "_v" : [
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            },
                                            {
                                                "_t" : "JValue",
                                                "_v" : [ ]
                                            }
                                        ]
                                    }
                                }
                            }
                        ]

TableHeaderKey 属性的值。

"tableHeaderKey": [
                {
                    "Line": [
                        136,
                        242,
                        1179,
                        1213
                    ]
                },
                {
                    "Supplier Part / Item Number": [
                        265,
                        760,
                        1177,
                        1219
                    ]
                },
                {
                    "Item Description": [
                        949,
                        1245,
                        1179,
                        1219
                    ]
                }
                {
                    "Unit Price": [
                        1991,
                        2183,
                        1179,
                        1213
                    ]
                },
                {
                    "Line Total": [
                        2212,
                        2403,
                        1178,
                        1213
                    ]
                }
            ]

在从 mongo 获取值时出现以下错误:

System.FormatException:反序列化类结果的 TableHeaderKey 属性时出错:类型“Newtonsoft.Json.Linq.JToken”没有合适的构造函数或 Add 方法。---> MongoDB.Bson.BsonSerializationException:类型“Newtonsoft.Json.Linq.JToken”没有合适的构造函数或 Add 方法。在 MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer 2.FinalizeResult(Object accumulator) at MongoDB.Bson.Serialization.Serializers.EnumerableSerializerBase2.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) 在 MongoDB.Bson.Serialization.Serializers.SerializerBase 1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) at MongoDB.Bson.Serialization.Serializers.DiscriminatedWrapperSerializer1.<>c__DisplayClass6_0.b__0(String elementName, Int64 flag) 在 MongoDB.Bson.Serialization .Serializers.SerializerHelper.DeserializeMembers(BsonDeserializationContext 上下文,Action`2 memberHandler)

任何帮助表示赞赏。谢谢

标签: c#jsonmongodbserialization

解决方案


推荐阅读