Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 464 / 17 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 7:

Работа с JSON, XML, сжатие данных

< Лекция 18 || Самостоятельная работа 7: 123 || Самостоятельная работа 8 >
Аннотация: Данная лекция посвящена работе с данными в формате JSON и XML и сжатию данных.

Цель работы: освоить технологию работы с форматами JSON и XML и работу со сжатием данных

JSON, XML, сжатие данных

Данные, которые передаются между веб-сервисом и клиентским приложением, кодируют с использованием определенных форматов. Существует множество таких форматов. Например, в ответ на запрос загрузки веб-страницы с веб-сервера могут поступить данные в формате HTML. При работе с API веб-сервисов обычно используются другие форматы, среди них наиболее распространены JSON (Java Script Object Notation) и XML (eXtensible Markup Language). Эти форматы могут использоваться и в задачах, которые не связаны с веб-службами. Например, в XML или JSON могут быть сериализованы объекты (при условии возможности сериализации), состояние которых нужно сохранить в постоянной памяти и загрузить, десериализовав, при очередном запуске приложения.

Как мы увидим ниже, JSON и XML имеют определенные особенности, которые можно учитывать, принимая решение об использовании того или иного формата. С их помощью можно закодировать одни и те же данные, существенная разница между ними будет заключаться в размере полученных данных и в удобстве восприятия данных человеком (нужно обычно при отладке). Ниже мы рассмотрим эти характеристики на практике.

С вопросами передачи и хранения данных тесно связана тема сжатия данных. Сжатие позволяет особым образом обработать данные, получив их представление, имеющее меньший размер, чем исходные данные, но содержащее ту же информацию. В данном случае речь идёт о так называемом сжатии информации без потерь, такое сжатие применимо, например, к документам (или к любым другим данным), когда критически важно точное соответствие данных, хранящихся в исходном документе тем данным, которые получены из сжатой копии документа. Среди алгоритмов сжатия без потерь можно отметить, например, алгоритм .ZIP.

Существует и так называемое сжатие с потерями – оно используется в тех случаях, когда отбрасывание некоторой части информации не ухудшает (или ухудшает незначительно) возможности по работе с информацией. Взамен потери некоторой части информации мы получаем очень большие уровни сжатия. Такое сжатие используется для кодирования изображений (.JPG), звуковых файлов (.MP3), видеофайлов.

Работа с JSON, XML, сжатие данных

Создадим учебное приложение (P7_1), которое демонстрирует работу с JSON, XML и основы работы со сжатыми данными. Воспользуемся шаблоном Приложение Windows Phone. Добавим в приложение новый класс, назовём его ForSerialization и опишем в нём следующие поля и конструктор (Листинг 27.1.)

using System;

namespace P7_1
{
    public class ForSerialization
    {
        //Открытые поля
        public string Line1;
        public int Number1;

        public int[] IntArray;

        public ForSerialization()
        {
            //Инициализация полей
            Line1 = "Пример строки";
            Number1 = 123;

            IntArray = new int[10];

            Random r = new Random();

            for (int i = 0; i < 10; i++)
            {
                IntArray[i] = r.Next() - r.Next();
            }
        }
    }
}
Листинг 27.1. Код класса ForSerialization

Класс объявлен как общедоступный, это нужно для сериализации, в нём объявлено несколько открытых полей, одно из которых – строка, другое – число, третье поле – это массив, в который мы добавляем десять случайных чисел в конструкторе класса, там же мы инициализируем два других поля.

На главной странице приложения, рис. 27.1., разместим три кнопки. Мы будем размещать код, демонстрирующий интересующие нас техники работы, в обработчиках их событий Click.

Страница MainPage

увеличить изображение
Рис. 27.1. Страница MainPage

Кроме того, обратите внимание на состав папки References проекта. Здесь мы используем библиотеку Ionic.Zlib для демонстрации работы со сжатыми данными. Существуют и другие библиотеки, подходящие для тех же целей.

< Лекция 18 || Самостоятельная работа 7: 123 || Самостоятельная работа 8 >