Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 463 / 17 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 7:
Работа с JSON, XML, сжатие данных
В Листинге 27.2 приведен полный код файла MainPage.xaml.cs
using Ionic.Zlib;
using Microsoft.Phone.Controls;
using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Windows;
using System.Xml.Serialization;
namespace P7_1
{
public partial class MainPage : PhoneApplicationPage
{
// Конструктор
public MainPage()
{
InitializeComponent();
}
private void cmd_SerializationXML_Click(object sender, RoutedEventArgs e)
{
//Объект для сериализации
ForSerialization ObjectForSerialization = new ForSerialization();
//Тип данных для сериализации
Type t = typeof(ForSerialization);
//XML-сериализатор для объекта
XmlSerializer XmlS = new XmlSerializer(t);
//Поток для хранения результатов сериализации
MemoryStream XmlStr = new MemoryStream();
//Сериализация в поток
XmlS.Serialize(XmlStr, ObjectForSerialization);
//Подготовка к чтению данных из потока
XmlStr.Position = 0;
//Средство считывания потока
StreamReader StRead = new StreamReader(XmlStr);
//Строка в которую считывается поток
string XmlString = StRead.ReadToEnd();
//Вывод строки
MessageBox.Show(XmlString);
//Десериализация
XmlSerializer XmlDS = new XmlSerializer(t);
//Подготовка потока
XmlStr.Position = 0;
//Создаём объект из сериализованных данных
ForSerialization NewObjectFromXML = XmlDS.Deserialize(XmlStr) as ForSerialization;
MessageBox.Show("Десериализация завершена");
}
private void cmd_SerializationJSON_Click(object sender, RoutedEventArgs e)
{
//Объект для сериализации
ForSerialization ObjectForSerialization = new ForSerialization();
//Тип данных для сериализации
Type t = typeof(ForSerialization);
//JSON-сериализатор
DataContractJsonSerializer JsS = new DataContractJsonSerializer(t);
//Поток для хранения результатов сериализации
MemoryStream JsonStr = new MemoryStream();
JsS.WriteObject(JsonStr, ObjectForSerialization);
//Подготовка к чтению данных из потока
JsonStr.Position = 0;
//Средство считывания потока
StreamReader StRead = new StreamReader(JsonStr);
//Строка в которую считывается поток
string JsonString = StRead.ReadToEnd();
//Вывод строки
MessageBox.Show(JsonString);
//Десериализация
DataContractJsonSerializer JsDS = new DataContractJsonSerializer(t);
//Подготовка потока
JsonStr.Position = 0;
//Создаём объект из сериализованных данных
ForSerialization NewObjectFromJSON = JsDS.ReadObject(JsonStr) as ForSerialization;
MessageBox.Show("Десериализация завершена");
}
private void cmd_Compression_Click(object sender, RoutedEventArgs e)
{
string DataForCompression = "Данные для сжатия 1 Данные для сжатия
2 Данные для сжатия 3";
//Строка для сжатия, записанная в массив байтов
Byte[] BytesFromString = System.Text.Encoding.UTF8.GetBytes(DataForCompression);
//Новый массив, содержащий сжатую строку
byte[] CompressedData = GZipStream.CompressString(DataForCompression);
//Строка, восстановленная из сжатых данных
string Uncompressed = GZipStream.UncompressString(CompressedData);
MessageBox.Show("Размеры байтовых массивов. Для исходной строки: " + BytesFromString.Length.ToString() + " байт.
При сжатии: " + CompressedData.Length.ToString() + " байт");
MessageBox.Show("Исходная строка: (" + DataForCompression + "), строка,
полученная после сжатия и распаковки: (" + Uncompressed + ").");
}
}
}
Листинг
27.2.
Код файла MainPage.xaml.cs