最近在写微服务,需要去调用其他微服务接口,经常涉及到对象与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时,大多数情况会异常