Mongo中,數組中的string 自動變成數字引起出錯
阿新 • • 發佈:2017-06-16
collect value 問題 對象序列化 put convert 成了 mongo 發現
遇到的問題:
有個Message對象,其中有個字段 叫 UseridList ,類型為 List<string> ,將Message對象序列化後,存入Mongo
var message=new Message(){ UserList=new List<string>(){"02222222222222222222222"} };
var bd = BsonDocument.Parse(JsonConvert.SerializeObject(message));
Task t = collection.InsertOneAsync(bd);
然後將Message讀出來
var UseridList = JsonConvert.DeserializeObject<List<string>>(item.GetElement("UseridList").Value.ToString())
在這一句代碼出錯!!!!錯誤提示是:input string "02222222222222222222222" is not a valid number
感覺有點莫名其妙,明明轉換成string,怎麽會有這個提示?
反復調試發現,item.GetElement("UseridList").Value 讀出來是mongo 類型的數組,原本的字符串數組,直接變成了數字數組。所以外層再進行json轉換時會出錯!
那麽,可以換一種寫法,下面就正確了:
UseridList=JsonConvert.DeserializeObject<List<string>>(item.GetValue("UseridList").ToJson()),
Mongo中,數組中的string 自動變成數字引起出錯