最近在寫微服務,需要去調用其他微服務接口,經常涉及到對象與Json之間轉換,也遇到了很多坑
一、對象類屬性定義
[JsonProperty("id")] [BsonElement("id")] public string Id { get; set; }
由於使用的是Mongo庫,代碼的屬性定義都如上面代碼所示
二、轉換方式
1.MongoDB.Bson
json到對象:BsonSerializer.Deserialize()
對象到json:BsonExtensionMethods.ToJson()
遇到的坑:
1)DateTime類型
當對象中存在DateTime類型,ToJson()轉成的Json是 ISODate("2019-10-29T11:17:16Z")格式,轉換失敗
2)int等數值類型
ToJson()轉成的Json是 NumberLong(21)格式,轉換失敗
3)JObject
對象中字段存在JObject類型時,ToJson()大多數情況會異常
1.Newtonsoft.Json
son到對象:JsonConvert.DeserializeObject()
對象到json:JsonConvert.SerializeObject()
遇到的坑:
1)DateTime類型
當對象中存在DateTime類型,SerializeObject()轉成的Json是 "2019-10-29 11:17:16"格式,轉換異常
2)BsonDocument
由於使用Mongo庫,對象中經常會使用BsonDocument作為字段類型,然而DeserializeObject()把json對應字段轉化成BsonDocument時,大多數情況會異常