C# 更改特定类型(不是我的)的JSON.NET序列化

C# 更改特定类型(不是我的)的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

我正在使用Newtonsoft的JSON.NET库序列化一些对象。特别是,我希望将NetTopologySuite
Point
类(或GeoAPI
IPoint
接口)存储为对象上的属性

我只想在生成的JSON中存储
纬度
经度
属性。相比之下,IPoint具有
X
Y
Z
,以及一些其他属性

我是否可以插入自己的逻辑,以了解如何将这个特定类型序列化/反序列化到JSON或从JSON中序列化/反序列化


谢谢

对于这种操作,我总是关注TweetSharp及其处理方式

例如,TweetSharp使用TwitterGeoConverter.cs将TwitterGeoLocation.GeoCoordinates类型序列化/反序列化为JSON:

此转换器中的关键方法有:

  • CanConvert-是否应在此成员上使用此转换器
  • WriteJson-将对象处理为字符串输出
  • ReadJson-处理字符串到对象的解析
转换器本身使用JsonSerializerSettings在JSON.Net中注册-例如:

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)-/所有链接都已断开:(