2017-05-09 1 views
1

JsonオブジェクトをMongoDb BsonDocumentに変換しようとしていますが、Jsonオブジェクトから変換された日付は、dateではなくstringに変換されます。以下の例では、BsonValueTypeを文字列として出力しています。
Bson Dateの値に正しく変換する方法はありますか?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の日付のようにフォーマットされた値が含まれていても)で始まる文字列値を持っているので、これは、あまりにも驚くべきことではありません。

次のいずれかを試してみてください:

  • あなたがタイプJObjectとしてnewObjectを維持したい場合:

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

    これは、文字列値は、ISOのタイムスタンプが含まれているとする必要があることにMongoDBのBsonDocument.Parseのヒントを提供します日付/時刻型として変換できます。

  • あなたの代わりにnewObjectのために(強く型付けされた)匿名のC#型を使用して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

ありがとうございます。出来た!! –

関連する問題