How can I parse a JSON string that would cause illegal C# identifiers?
You can deserialize to a dictionary.
public class Item
{
public string fajr { get; set; }
public string sunrise { get; set; }
public string zuhr { get; set; }
public string asr { get; set; }
public string maghrib { get; set; }
public string isha { get; set; }
}
var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
While the dictionary is the best solution for the specific case you had, the question you asked could also be interpreted as:
how do I deserialize objects with property names that cannot be used in C#?
For example what if you had
{
"0": "04:15",
"zzz": "foo"
}
Solution: use annotations:
public class Item
{
[JsonProperty("0")]
public string AnyName { get; set; }
[JsonProperty("zzz")]
public string AnotherName { get; set; }
}