C#序列化之Json转换遇到的坑

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

猜你喜欢

转载自www.cnblogs.com/dengquan/p/11761872.html
今日推荐