2017-05-09 20 views
1

我想將Json對象轉換爲MongoDb BsonDocument,但是在將從Json對象賦值的轉換日期轉換爲字符串而不是日期之後。以下示例將BsonValueType作爲字符串輸出。
有什麼方法可以正確轉換爲Bson日期值嗎?當轉換Json到Bson Document無法正確地轉換日期值

 var newObject = new JObject { 
          { "name", "John" }, 
          { "age", 25 },         
          { "registeredDate" , "2017-05-09T09:14:06+00:00"}, 
     }; 

     BsonDocument bsonObj = BsonDocument.Parse(newObject.ToString()); 

     Console.WriteLine(bsonObj["registeredDate"].BsonType); 
     //Outputs String 

回答

1

這不是太奇怪,因爲你的JSON對象的registeredDate酒店有一個字符串值,開始與(即使它包含格式化像ISO日期值)。

請嘗試以下之一:

  • 如果你想保持newObjectJObject類型:

    var newObject = new JObject 
    { 
        { "name", "John" }, 
        { "age", 25 }, 
        { "registeredDate" , new JRaw(@"new ISODate(""2017-05-09T09:14:06+00:00"")") }, 
    };     // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    

    這給了MongoDB的BsonDocument.Parse暗示該字符串值包含ISO時間戳和應被轉換爲日期/時間類型。

  • 如果你與使用(強類型)匿名C#類型newObject代替OK:

    var newObject = new 
    { 
        name = "John", 
        age = 25, 
        registeredDate = DateTime.Parse("2017-05-09T09:14:06+00:00"), 
    }; 
    BsonDocument bsonObj = BsonDocument.Parse(newObject.ToJson()); 
    

    這完全需要Json.NET退出循環,讓MongoDB中完成所有的工作。

我承認我不知道這些解決方案是否應該如何完成。我不清楚所涉及的圖書館是否足以證明其他(可能更好)的選擇。

+0

非常感謝。有效!! –