C# 更改特定类型(不是我的)的JSON.NET序列化
我正在使用Newtonsoft的JSON.NET库序列化一些对象。特别是,我希望将NetTopologySuiteC# 更改特定类型(不是我的)的JSON.NET序列化,c#,serialization,json.net,C#,Serialization,Json.net,我正在使用Newtonsoft的JSON.NET库序列化一些对象。特别是,我希望将NetTopologySuitePoint类(或GeoAPIIPoint接口)存储为对象上的属性 我只想在生成的JSON中存储纬度和经度属性。相比之下,IPoint具有X、Y、Z,以及一些其他属性 我是否可以插入自己的逻辑,以了解如何将这个特定类型序列化/反序列化到JSON或从JSON中序列化/反序列化 谢谢 对于这种操作,我总是关注TweetSharp及其处理方式 例如,TweetSharp使用TwitterGe
Point
类(或GeoAPIIPoint
接口)存储为对象上的属性
我只想在生成的JSON中存储纬度
和经度
属性。相比之下,IPoint具有X
、Y
、Z
,以及一些其他属性
我是否可以插入自己的逻辑,以了解如何将这个特定类型序列化/反序列化到JSON或从JSON中序列化/反序列化
谢谢 对于这种操作,我总是关注TweetSharp及其处理方式 例如,TweetSharp使用TwitterGeoConverter.cs将TwitterGeoLocation.GeoCoordinates类型序列化/反序列化为JSON: 此转换器中的关键方法有:
- CanConvert-是否应在此成员上使用此转换器
- WriteJson-将对象处理为字符串输出
- ReadJson-处理字符串到对象的解析
new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Include,
ContractResolver = new JsonConventionResolver(),
Converters = new List<JsonConverter>
{
new TwitterDateTimeConverter(),
new TwitterWonkyBooleanConverter(),
new TwitterGeoConverter()
}
})
新JsonSerializerSettings
{
MissingMemberHandling=MissingMemberHandling.Ignore,
NullValueHandling=NullValueHandling.Ignore,
DefaultValueHandling=DefaultValueHandling。包括,
ContractResolver=新的JsonConventionResolver(),
转换器=新列表
{
新TwitterDateTimeConverter(),
新TwitterWonkyBooleanConverter(),
新TwitterGeoConverter()
}
})
(来自)
或者,也可以使用属性注册转换器-请参阅
或者。。。如果情况非常简单,并且您拥有源代码,那么如果您只是想在序列化过程中忽略某些属性,那么对于要跳过的属性,有一个
[JsonIgnore]
属性可用。第一个链接是GitHub上的死链接(404)-/所有链接都已断开:(