Created
November 9, 2020 09:59
-
-
Save rajeevs1992/ce2bb66c2a265aeac119ff5e89473ddf to your computer and use it in GitHub Desktop.
Case insensitive JSON reading in C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class JsonExtensions | |
{ | |
public static JToken GetPropertyFromPath(this JToken token, string path) | |
{ | |
if (token == null) | |
{ | |
return null; | |
} | |
string[] pathParts = path.Split("."); | |
JToken current = token; | |
foreach (string part in pathParts) | |
{ | |
current = current.GetProperty(part); | |
if (current == null) | |
{ | |
return null; | |
} | |
} | |
return current; | |
} | |
public static JToken GetProperty(this JToken token, string name) | |
{ | |
if (token == null) | |
{ | |
return null; | |
} | |
var obj = token as JObject; | |
JToken match; | |
if (obj.TryGetValue(name, StringComparison.OrdinalIgnoreCase, out match)) | |
{ | |
return match; | |
} | |
return null; | |
} | |
public static int IntValue(this JToken token) | |
{ | |
if (token == null) | |
{ | |
return default(int); ; | |
} | |
return token.Value<int>(); | |
} | |
public static int IntValue(this JToken token, string path) | |
{ | |
JToken targetToken = token?.GetPropertyFromPath(path); | |
return targetToken.IntValue(); | |
} | |
public static DateTime DateTimeValue(this JToken token) | |
{ | |
if (token == null) | |
{ | |
return default(DateTime); | |
} | |
return token.Value<DateTime>(); | |
} | |
public static DateTime DateTimeValue(this JToken token, string path) | |
{ | |
JToken targetToken = token?.GetPropertyFromPath(path); | |
return targetToken.DateTimeValue(); | |
} | |
public static string StringValue(this JToken token) | |
{ | |
if (token == null) | |
{ | |
return default(string); | |
} | |
return token.Value<string>(); | |
} | |
public static string StringValue(this JToken token, string path) | |
{ | |
JToken targetToken = token?.GetPropertyFromPath(path); | |
return targetToken.StringValue(); | |
} | |
public static long LongValue(this JToken token) | |
{ | |
if (token == null) | |
{ | |
return default(long); | |
} | |
return token.Value<long>(); | |
} | |
public static long LongValue(this JToken token, string path) | |
{ | |
JToken targetToken = token?.GetPropertyFromPath(path); | |
return targetToken.LongValue(); | |
} | |
public static double DoubleValue(this JToken token) | |
{ | |
if (token == null) | |
{ | |
return default(double); | |
} | |
return token.Value<double>(); | |
} | |
public static double DoubleValue(this JToken token, string path) | |
{ | |
JToken targetToken = token?.GetPropertyFromPath(path); | |
return targetToken.DoubleValue(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment