【问题标题】:how to insert data from existing Json File To MongoDb With c#?如何使用 c# 将现有 Json 文件中的数据插入到 MongoDb?
【发布时间】:2018-10-05 22:46:55
【问题描述】:

我需要帮助,我想将 Json 文件中的数据添加到 MongoDb,我使用此代码但它给了我一个错误:“FormatException:无法从 BsonType 'Array' 反序列化 'BsonDocument'。” :( :( this is my code

   **static async Task MainAsync()
    {
        var connectionString = "mongodb://localhost:27017";

         var client = new MongoClient(connectionString);
         IMongoDatabase database = client.GetDatabase("test");

         string json = File.ReadAllText("D:\\Test.json");
         //MessageBox.Show(json);
        var document = new BsonDocument();
        BsonDocument doc = BsonDocument.Parse(json);
        document.Add(BsonDocument.Parse(json));
        BsonSerializer.Deserialize<BsonDocument>(json);
        //BsonDocument document = BsonDocument.Parse(json.ToString());
         var collection = database.GetCollection<BsonDocument>("test_collection");
         await collection.InsertOneAsync(document);**

这是我用来创建 JSON 文件的代码: public bool WriteJason(DataTable dt, 字符串路径) { 尝试 {

            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            List<Dictionary<string, string>> rows = new List<Dictionary<string, string>>();
            Dictionary<string, string> row = null;

            foreach (DataRow dr in dt.Rows)
            {
                row = new Dictionary<string, string>();
                foreach (DataColumn col in dt.Columns)
                {
                    row.Add(col.ColumnName.Trim().ToString(), Convert.ToString(dr[col]));
                }
                rows.Add(row);
            }
            string jsonstring = serializer.Serialize(rows);

            using (var file = new StreamWriter(path, false))
            {
                file.Write(jsonstring);
                file.Close();
                file.Dispose();
            }
            return true;
        }
        catch { return false; }
    }

【问题讨论】:

  • 有问题的代码,请。调试图像非常困难。编译器可以做到这一点。此外,您应该提供 JSON 的示例(也在您的问题中)。点击edit button 编辑您的问题。
  • 感谢您的建议
  • 能否也包含一些示例 JSON?
  • 现在我用简单的 json 文件进行测试,我每次都更改文件,因为每次导演给我一个文件来处理它,所以我们没有固定格式的文件,我没有不知道我解释得好不好
  • document.Add(BsonDocument.Parse(json)); 是干什么用的?

标签: c# mongodb


【解决方案1】:

你需要更少的代码来做到这一点,这应该足够了:

 string json = File.ReadAllText("D:\\Test.json");
 BsonDocument doc = BsonDocument.Parse(json);
 var collection = new MongoClient("mongodb://localhost:27017").GetDatabase("test").GetCollection<BsonDocument>("test_collection");
 await collection.InsertOneAsync(doc);

如果这不起作用,那么您需要在此处发布的 JSON 文件有问题。

【讨论】:

  • 我添加了我用来创建json文件的代码,你能看一下吗
  • 好的,但文件中的实际内容是什么?
  • 实际上是公司的文件内容信息(商业智能),这就是为什么我要使用简单的文件内容信息(如 Id、Name、Address ...)进行测试,我认为 prb 在方法中创建json文件它给了我一个json文件,一行(所有信息都在一行中)
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 2021-11-11
  • 2020-04-17
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多