Как я могу разобрать строку JSON, которая приведет к незаконным идентификаторам C #?

Я использую библиотеку NewtonSoft JSON Convert для анализа и преобразования строки JSON в объекты C #. Но теперь я столкнулся с действительно неудобной строкой JSON, и я не могу преобразовать ее в объект C #, потому что я не могу сделать class C # из этой строки JSON.

Вот строка JSON

{ "1": { "fajr": "04:15", "sunrise": "05:42", "zuhr": "12:30", "asr": "15:53", "maghrib": "19:18", "isha": "20:40" }, "2": { "fajr": "04:15", "sunrise": "05:42", "zuhr": "12:30", "asr": "15:53", "maghrib": "19:18", "isha": "20:41" } } 

Класс C #, необходимый для синтаксического анализа этой строки JSON, должен выглядеть следующим образом:

 public class 1 { 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; } } public class 2 { 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; } } 

Но он не может быть истинным classом C #, потому что мы знаем, что имена classов не могут начинаться с числа.

Будет действительно здорово, если кто-нибудь может предложить, как разбирать такой тип строки json.

Вы можете десериализовать словарь.

 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>(json); 

Хотя словарь является лучшим решением для конкретного случая, который у вас был, вопрос, который вы задали, также может быть интерпретирован как:

как я десериализую объекты с именами свойств, которые нельзя использовать в C #?

Например, что, если бы вы

 { "0": "04:15", "zzz": "foo" } 

Решение: используйте annotations:

 public class Item { [JsonProperty("0")] public string AnyName { get; set; } [JsonProperty("zzz")] public string AnotherName { get; set; } } 
  • Как десериализовать данные JSON?
  • Как преобразовать datatable в строку json с помощью json.net?
  • Json.net сериализует определенное частное поле
  • Как преобразовать escape-строку JSON в объект JSON?
  • Создайте строго типизированный объект c # из объекта json с ID как имя
  • C # WCF REST. Как вы используете сериализатор JSON.Net вместо стандартного DataContractSerializer?
  • Json.Net: свойство Serialize / Deserialize в качестве значения, а не как объект
  • Использование JSON.NET для возврата ActionResult
  • Указание пользовательского формата DateTime при сериализации с помощью Json.Net
  • Как десериализовать дочерний объект с динамическими (числовыми) именами клавиш?
  • Могу ли я сериализовать вложенные свойства в мой class за одну операцию с помощью Json.net?
  • Давайте будем гением компьютера.