Какова самая простая функция C # для синтаксического анализа строки JSON в объект?

Какова самая простая функция C # для синтаксического анализа строки JSON в объекте и отображения ее (C # XAML WPF)? (например, объект с 2 массивами – arrA и arrB)

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(YourObjectType)); YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream); 

Вы также можете использовать JavaScriptSerializer , но DataContractJsonSerializer по-видимому, лучше способен обрабатывать сложные типы.

Как ни странно, JavaScriptSerializer когда-то был устаревшим (в 3.5), а затем воскрешен из-за ASP.NET MVC (в 3.5 SP1). Этого было бы достаточно, чтобы поколебать доверие и привести меня к использованию DataContractJsonSerializer поскольку он сильно испечен для WCF.

Просто используйте библиотеку Json.NET . Он позволяет легко анализировать строки формата Json:

 JObject o = JObject.Parse(@" { ""something"":""value"", ""jagged"": { ""someother"":""value2"" } }"); string something = (string)o["something"]; - JObject o = JObject.Parse(@" { ""something"":""value"", ""jagged"": { ""someother"":""value2"" } }"); string something = (string)o["something"]; 

Документация: анализ JSON-объекта с использованием JObject.Parse

Я думаю, это то, что вы хотите:

 JavaScriptSerializer JSS = new JavaScriptSerializer(); T obj = JSS.Deserialize(String); 

Вы должны создать структуру, которая представляет JSON-ключи (в случае, если вы точно это знаете), а затем вы можете легко десериализовать строку JSON в свою структуру. На моем примере я отменил дескрипцию ответа с сервера Google Cloud Message:

 class templateResponse { public String multicast_id; public String success; public String failure; public String canonical_ids; public Result[] results; public class Result { public String message_id; public String registration_id; public String error; }; } 

входящий JSON был:

 "\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"}]}" 

Итак, используйте

 templateResponse result = new JavaScriptSerializer().Deserialize(json); 

и вы получите десериализованный объект result

Я бы откликнулся на библиотеку Json.NET, которая может преобразовать ответ JSON в XML-документ. С помощью XML-документа вы можете легко запросить XPath и извлечь нужные данные. Я нахожу это довольно полезным.

  • Как подавить ошибки скрипта при использовании элемента управления WPF WebBrowser?
  • В WPF можно фильтровать CollectionViewSource без кода?
  • Глобальные исключения исключений в приложении WPF?
  • WPF - Настройте фокус при нажатии кнопки - Без кода
  • Почему я не могу ссылаться на System.ComponentModel.DataAnnotations?
  • Зачем использовать MVVM?
  • Преобразование управления WPF (XAML) в документ XPS
  • Как преобразовать цвет в кисть в XAML?
  • Создать редактор гитарных аккордов в WPF (из RichTextBox?)
  • В WPF, каковы различия между атрибутами x: Name и Name?
  • Как вы убедитесь, что WPF выпускает большой битмап-источник из памяти?
  • Давайте будем гением компьютера.