It took me some time to get this right, drawing from discussions on StackOverflow, but here is code that will capitalize the first letter of every key in a JSON object.
public static JObject Capitalize(JObject obj)
{
JObject newObj = new JObject();
foreach (var o in obj)
{
string key = o.Key;
string newKey = char.ToUpper(key[0]) + key.Substring(1);
JToken value = o.Value;
if (value.HasValues)
{
try
{
JObject child = JObject.Parse(value.ToString());
JObject newValue = Capitalize(child);
value = newValue;
}
catch (Exception)
{
}
}
newObj[newKey] = value;
}
return newObj;
}