diff --git a/src/IPData/Http/Serializer/JsonSerializer.cs b/src/IPData/Http/Serializer/JsonSerializer.cs index 85e8227..8890006 100644 --- a/src/IPData/Http/Serializer/JsonSerializer.cs +++ b/src/IPData/Http/Serializer/JsonSerializer.cs @@ -1,29 +1,22 @@ -using System.Globalization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; +using System.Text.Json; namespace IPData.Http.Serializer { internal class JsonSerializer : ISerializer { - private static readonly JsonSerializerSettings _settings = new JsonSerializerSettings + private static readonly JsonSerializerOptions _options = new JsonSerializerOptions { - MetadataPropertyHandling = MetadataPropertyHandling.Ignore, - DateParseHandling = DateParseHandling.None, - Converters = - { - new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal } - } + IgnoreNullValues = true }; public T Deserialize(string json) { - return JsonConvert.DeserializeObject(json, _settings); + return System.Text.Json.JsonSerializer.Deserialize(json, _options); } public string Serialize(object item) { - return JsonConvert.SerializeObject(item, _settings); + return System.Text.Json.JsonSerializer.Serialize(item, _options); } } } diff --git a/src/IPData/IPData.csproj b/src/IPData/IPData.csproj index 129a9ce..d90f397 100644 --- a/src/IPData/IPData.csproj +++ b/src/IPData/IPData.csproj @@ -25,7 +25,7 @@ - + diff --git a/src/IPData/IPData.nuspec b/src/IPData/IPData.nuspec index ea4b6e0..fe533ee 100644 --- a/src/IPData/IPData.nuspec +++ b/src/IPData/IPData.nuspec @@ -16,7 +16,7 @@ - + diff --git a/src/IPData/Models/ApiError.cs b/src/IPData/Models/ApiError.cs index 9c295b7..b5aac42 100644 --- a/src/IPData/Models/ApiError.cs +++ b/src/IPData/Models/ApiError.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { @@ -13,7 +13,7 @@ public ApiError(string message) Message = message; } - [JsonProperty("message")] + [JsonPropertyName("message")] public string Message { get; set; } } } diff --git a/src/IPData/Models/AsnInfo.cs b/src/IPData/Models/AsnInfo.cs index e37d353..63a2d3e 100644 --- a/src/IPData/Models/AsnInfo.cs +++ b/src/IPData/Models/AsnInfo.cs @@ -1,22 +1,22 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class AsnInfo { - [JsonProperty("asn", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("asn")] public string Asn { get; set; } - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("domain", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("domain")] public string Domain { get; set; } - [JsonProperty("route", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("route")] public string Route { get; set; } - [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("type")] public string Type { get; set; } } } diff --git a/src/IPData/Models/BlocklistInfo.cs b/src/IPData/Models/BlocklistInfo.cs index 574109a..3f12f3f 100644 --- a/src/IPData/Models/BlocklistInfo.cs +++ b/src/IPData/Models/BlocklistInfo.cs @@ -1,16 +1,16 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class BlocklistInfo { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("site", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("site")] public string Site { get; set; } - [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("type")] public string Type { get; set; } } } diff --git a/src/IPData/Models/CarrierInfo.cs b/src/IPData/Models/CarrierInfo.cs index 69fa4b2..ec62e2d 100644 --- a/src/IPData/Models/CarrierInfo.cs +++ b/src/IPData/Models/CarrierInfo.cs @@ -1,17 +1,16 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class CarrierInfo { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("mcc", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("mcc")] public string Mcc { get; set; } - [JsonProperty("mnc", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("mnc")] public string Mnc { get; set; } } - } diff --git a/src/IPData/Models/CompanyInfo.cs b/src/IPData/Models/CompanyInfo.cs index d7d5768..34b34f9 100644 --- a/src/IPData/Models/CompanyInfo.cs +++ b/src/IPData/Models/CompanyInfo.cs @@ -1,19 +1,19 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class CompanyInfo { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("domain", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("domain")] public string Domain { get; set; } - [JsonProperty("network", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("network")] public string Network { get; set; } - [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("type")] public string Type { get; set; } } } diff --git a/src/IPData/Models/Currency.cs b/src/IPData/Models/Currency.cs index f0d0a6f..bfbbf24 100644 --- a/src/IPData/Models/Currency.cs +++ b/src/IPData/Models/Currency.cs @@ -1,22 +1,22 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class Currency { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("code")] public string Code { get; set; } - [JsonProperty("symbol", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("symbol")] public string Symbol { get; set; } - [JsonProperty("native", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("native")] public string Native { get; set; } - [JsonProperty("plural", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("plural")] public string Plural { get; set; } } } diff --git a/src/IPData/Models/IPLookupResult.cs b/src/IPData/Models/IPLookupResult.cs index b956b3c..4f8e819 100644 --- a/src/IPData/Models/IPLookupResult.cs +++ b/src/IPData/Models/IPLookupResult.cs @@ -1,93 +1,93 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Text.Json.Serialization; using IPData.Helpers.Extensions; -using Newtonsoft.Json; namespace IPData.Models { public class IPLookupResult { - [JsonProperty("ip", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("ip")] public string Ip { get; set; } - [JsonProperty("is_eu", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_eu")] public bool? IsEu { get; set; } - [JsonProperty("city", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("city")] public string City { get; set; } - [JsonProperty("region", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("region")] public string Region { get; set; } - [JsonProperty("region_code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("region_code")] public string RegionCode { get; set; } - [JsonProperty("country_name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("country_name")] public string CountryName { get; set; } - [JsonProperty("country_code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("country_code")] public string CountryCode { get; set; } - [JsonProperty("continent_name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("continent_name")] public string ContinentName { get; set; } - [JsonProperty("continent_code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("continent_code")] public string ContinentCode { get; set; } - [JsonProperty("latitude", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("latitude")] public double? Latitude { get; set; } - [JsonProperty("longitude", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("longitude")] public double? Longitude { get; set; } - [JsonProperty("asn", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("asn")] public AsnInfo Asn { get; set; } - [JsonProperty("organisation", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("organisation")] public string Organisation { get; set; } - [JsonProperty("postal", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("postal")] public string Postal { get; set; } - [JsonProperty("calling_code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("calling_code")] public string CallingCode { get; set; } - [JsonProperty("flag", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("flag")] public Uri Flag { get; set; } - [JsonProperty("emoji_flag", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("emoji_flag")] public string EmojiFlag { get; set; } - [JsonProperty("emoji_unicode", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("emoji_unicode")] public string EmojiUnicode { get; set; } - [JsonProperty("languages")] + [JsonPropertyName("languages")] public List Languages { get; private set; } = new List(); - [JsonProperty("currency")] + [JsonPropertyName("currency")] public Currency Currency { get; set; } - [JsonProperty("time_zone")] + [JsonPropertyName("time_zone")] public TimeZone TimeZone { get; set; } - [JsonProperty("threat")] + [JsonPropertyName("threat")] public Threat Threat { get; set; } - [JsonProperty("region_type", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("region_type")] public string RegionType { get; set; } - [JsonProperty("carrier", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("carrier")] public CarrierInfo Carrier { get; set; } - [JsonProperty("company", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("company")] public CompanyInfo Company { get; set; } - [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("status")] public int? Status { get; set; } - [JsonProperty("count")] + [JsonPropertyName("count")] public int Count { get; set; } internal static string FieldName(Expression> expression) @@ -95,10 +95,10 @@ internal static string FieldName(Expression> expres var propName = expression.PropertyName(); var attribute = typeof(IPLookupResult) .GetProperty(propName) - ?.GetCustomAttributes(typeof(JsonPropertyAttribute), false) - .Single() as JsonPropertyAttribute; + ?.GetCustomAttributes(typeof(JsonPropertyNameAttribute), false) + .Single() as JsonPropertyNameAttribute; - return attribute?.PropertyName ?? string.Empty; + return attribute?.Name ?? string.Empty; } } -} \ No newline at end of file +} diff --git a/src/IPData/Models/Language.cs b/src/IPData/Models/Language.cs index 5c07261..d1e6293 100644 --- a/src/IPData/Models/Language.cs +++ b/src/IPData/Models/Language.cs @@ -1,16 +1,16 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace IPData.Models { public class Language { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("native", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("native")] public string Native { get; set; } - [JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("code")] public string Code { get; set; } } } diff --git a/src/IPData/Models/Threat.cs b/src/IPData/Models/Threat.cs index 6b5649d..58f0e8b 100644 --- a/src/IPData/Models/Threat.cs +++ b/src/IPData/Models/Threat.cs @@ -1,38 +1,38 @@ -using System.Collections.Generic; -using Newtonsoft.Json; +using System.Collections.Generic; +using System.Text.Json.Serialization; namespace IPData.Models { public class Threat { - [JsonProperty("is_tor", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_tor")] public bool? IsTor { get; set; } - [JsonProperty("is_proxy", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_proxy")] public bool? IsProxy { get; set; } - [JsonProperty("is_anonymous", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_anonymous")] public bool? IsAnonymous { get; set; } - [JsonProperty("is_known_attacker", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_known_attacker")] public bool? IsKnownAttacker { get; set; } - [JsonProperty("is_known_abuser", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_known_abuser")] public bool? IsKnownAbuser { get; set; } - [JsonProperty("is_threat", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_threat")] public bool? IsThreat { get; set; } - [JsonProperty("is_bogon", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_bogon")] public bool? IsBogon { get; set; } - [JsonProperty("is_icloud_relay", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_icloud_relay")] public bool? IsIcloudRelay { get; set; } - [JsonProperty("is_datacenter", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_datacenter")] public bool? IsDatacenter { get; set; } - [JsonProperty("blocklists")] + [JsonPropertyName("blocklists")] public List Blocklists { get; private set; } = new List(); } } diff --git a/src/IPData/Models/TimeZone.cs b/src/IPData/Models/TimeZone.cs index 9341c7e..4321911 100644 --- a/src/IPData/Models/TimeZone.cs +++ b/src/IPData/Models/TimeZone.cs @@ -1,23 +1,23 @@ -using System; -using Newtonsoft.Json; +using System; +using System.Text.Json.Serialization; namespace IPData.Models { public class TimeZone { - [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty("abbr", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("abbr")] public string Abbr { get; set; } - [JsonProperty("offset", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("offset")] public string Offset { get; set; } - [JsonProperty("is_dst", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("is_dst")] public bool? IsDst { get; set; } - [JsonProperty("current_time", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("current_time")] public DateTimeOffset? CurrentTime { get; set; } } }