Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
Программа для обнаружения и удаления вредоносных шпионских модулей, таких как программы шпионы (spyware), рекламные банн...
Программа для расширения возможностей веб-камеры, которая позволяет не просто настраивать вашу веб-камеру, но и накладыв...
Vivaldi — это гибкий, настраиваемый браузер, для которого «пользователь на первом месте», утверждают создатели, во главе...
Проигрыватель аудио-файлов. Не смотря на свой маленький размер, программа имеет довольно широкие функции: проигрывание ф...
Программа для обеспечения безопасности при подключении к точкам доступа Wi-Fi. Hotspot Shield создает частную виртуальну...
OSzone.net Microsoft Разработка приложений Windows Phone Принципы работы со строками JSON в Windows Phone RSS

Принципы работы со строками JSON в Windows Phone

Текущий рейтинг: 5 (проголосовало 1)
 Посетителей: 592 | Просмотров: 802 (сегодня 0)  Шрифт: - +

Большинство мобильных приложений должны уметь подключаться к внешним сервисам (существующим (Twitter, Facebook и др.) или новым, которые разработчику также предстоит реализовать). Один из наиболее распространенных методов работы со структурированными данными в коде программы подразумевает использование формата JSON.  JSON(JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Этот формат максимально доступен для чтения и анализа человеком или компьютером. JSON основан на двух следующих структурах данных:

Объекты JSON

Набор записей значений ключей, где каждое значение может быть примитивным типом или другой структурой JSON.

{
 Name : "Marcos",
 Address : {
   Street : "Marcos' street",
   Country : "Brazil",
   City : "Campina Grande"
 }
}

Массивы JSON

Список структур JSON (массивы или объекты JSON).

[
 {
   Name : "Marcos",
   Country : "Brazil"
 },
 {
   Name : "John",
   Country : "England"
 }
]

Для работы со строками JSON подходит множество библиотек. Эти библиотеки умеют преобразовывать строки JSON в переменные и наоборот, что делает возможным и значительно упрощает взаимодействие с внешними сервисами, использующими этот формат для обмена данными. В этой статье мы рассмотрим библиотеку Json.NET и познакомимся с принципами сериализации (конвертирования объектов C# в строки JSON), десериализации (конвертирования строк JSON в объекты C#) и поиска внутри структур JSON.

Установка библиотеки Json.NET

Библиотека Json.NET доступна в виде пакета Nuget, поэтому установить ее очень просто: щелкните по своему проекту правой кнопкой мыши и выберите Manage NuGet Packages... (Управление пакетами NuGet), введите «json.net» в поле поиска и щелкните Install (Установить).

*
Увеличить

Десериализация

Как уже было сказано ранее, десериализация (или парсинг) используется, чтобы получить структуру JSON (в виде строки) и преобразовать ее в переменные, которые можно использовать в вашем проекте.

Парсинг массива JSON

using Newtonsoft.Json.Linq;

public void ParseArray() {
  string jsonArrayAsString = "[ { Name : \"Marcos\", Country : \"Brazil\" },
  { Name : \"John\", Country : \"England\" }]";
  JArray jsonArray = JArray.Parse(jsonArrayAsString);
  JToken jsonArray_Item = jsonArray.First;
  while (jsonArray_Item != null)
  {
    string name = jsonArray_Item.Value<string>("Name");
    string country = jsonArray_Item.Value<string>("Country");
    //Be careful, you take the next from the current item, not from the JArray object.
    jsonArray_Item = jsonArray_Item.Next;
  }
}

Парсинг объекта JSON

using Newtonsoft.Json.Linq;

public void ParseObject()
{
  string jsonObjectAsString = "{ Name : \"Marcos\", Country : \"Brazil\" }";
  JObject jsonObject = JObject.Parse(jsonObjectAsString);
  string name = jsonObject.Value<string>("Name");
  string country = jsonObject.Value<string>("Country");
}

Сериализация

Сериализация используется для получения переменных C# и преобразования их в строку JSON.

Сериализация массива

public string StringifyArray(string[] names, string[] countries)
{
  JArray jsonArray = new JArray();
  for (int i = 0; i < names.Length; i++)
  {
    JObject jsonObject = new JObject();
    jsonObject["Name"] = names[i];
    jsonObject["Country"] = countries[i];
    jsonArray.Add(jsonObject);
  }
  return jsonArray.ToString();
}

Сериализация объекта

public string StringifyObject(string name, string country)
{
  JObject jsonObject = new JObject();
  jsonObject["Name"] = name;
  jsonObject["Country"] = country;
  return jsonObject.ToString();
}

Поиск

На данном этапе вы могли подумать, что библиотека Json.NET подходит только для сериализации и десериализации объектов JSON, но не для поиска внутри этих объектов. Это не так. Для поиска в структурах JSON предусмотрены два прекрасных метода: SelectToken и SelectTokens. Вот пример:

public void Search()
{
  string jsonObjectAsString = "{ Name : \"Marcos\", Country : \"Brazil\",
  Friends : [ {Name : \"John\", Country : \"England\"} , {Name : \"Chan\", Country : \"China\"} ] }";
  JObject jsonObject = JObject.Parse(jsonObjectAsString);
  List<JToken> friendCountries = jsonObject.SelectTokens("Friends[*].Country").ToList();
  for (int i = 0; i < friendCountries.Count; i++)
  {
    System.Diagnostics.Debug.WriteLine(friendCountries[i].ToString());
  }
}

Обратите внимание на параметр SelectTokens. Главная его задача — получить значение из поля Country (Страна) каждого друга пользователя Marcos. Параметр SelectTokens представляет собой выражение JPath. Выражения JPath — мощный инструмент для организации поиска в структурах JSON.

Несколько примеров выражений JPath:

  • Friends[?(@.Name=='John')].Country — получаем название страны, указанное каждым другом пользователя John.
  • Friends[0].Country — получаем название страны, указанное первым другом.
  • Friends[:2] — получаем названия стран, указанные первыми двумя друзьями из списка.

Разница между SelectToken и SelectTokens заключается в том, что в первом случае возвращается только один результат. SelectToken сгенерирует исключение, если выражение JPath вернет больше одного результата.

Подробнее о выражениях JPath  можно узнать здесь.

Иcточник: msdn.microsoft.com  •  Опубликована: 05.03.2015
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   JSON.


Оценить статью:
Вверх
Комментарии посетителей RSS

Чтобы оставить комментарий, зарегистрируйтесь или войдите с учетной записью социальной сети.