Skip to content

Instantly share code, notes, and snippets.

@rajeevs1992
Created November 9, 2020 09:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rajeevs1992/ce2bb66c2a265aeac119ff5e89473ddf to your computer and use it in GitHub Desktop.
Save rajeevs1992/ce2bb66c2a265aeac119ff5e89473ddf to your computer and use it in GitHub Desktop.
Case insensitive JSON reading in C#
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