Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 23922|Відповідь: 0

[Джерело] .net/c# Керівництва з інтерфейсу повідомлень публічної платформи WeChat Серіалізація та десеріалізація

[Копіювати посилання]
Опубліковано 23.08.2016 17:07:02 | | |
Нещодавно брат Шуан захотів спробувати формат розробника публічного акаунта WeChat і подав заявку на відкриття акаунта на публічній платформі WeChat. Потім я пішов подивитися гайд по інтерфейсу відкритої платформи, він додав посилання в групі, WeChat останнім часом перегрівся, я теж з цікавістю натиснув.

Натисніть на гайд інтерфейсу повідомлень, і ми побачимо, що інтерфейс повідомлень публічної платформи використовує XML для взаємодії з даними. Для зручності обробки даних ми зазвичай серіалізуємо та десеріалізуємо XML. Серіалізація — це процес перетворення стану об'єкта у формат, який можна підтримувати або передавати. Протилежністю серіалізації є десеріалізація, яка перетворює потоки на об'єкти. Ці два процеси поєднуються для спрощення зберігання та передачі даних.

Давайте спочатку поговоримо про серіалізацію, візьмемо XML-формат відповіді на графічні повідомлення як приклад, оскільки цей формат фактично включає всі вищезгадані push повідомлення та відповідь на повідомлення.


Коли <xml><Articles>ми отримуємо відповідь на дані від публічної платформи POST для повернення результату, ми використовуємо XML-серіалізацію, тобто для конвертації об'єкта даних відповіді у формат даних XML, який надає публічна платформа, що зручно для передачі даних. Серіалізація Тут я написав простий приклад коду на C#. Щоб отримати серіалізований рядок, Прямого виходу немає, звісно, у вашому проєкті можна безпосередньо Response.Output.


Тут зазначено, що ім'я кореневого елемента XML, згенерованого методом серіалізації класу XmlSerializer, за замовчуванням відповідає назві класу серіалізації. Чому я відчуваю себе таким заплутаним, коли читаю це речення? І я не хочу використовувати беззмістовне слово, як xml, як назву класу, нам потрібно додати тег властивості до класу серіалізації [XmlRoot(ElementName = "xml")], щоб вказати, що згенерований XML-елемент називається xml.
Якщо ви не додаєте цей тег, якщо ім'я класу серіалізації не відповідає імені кореневого елемента XML, ви завжди отримаєте помилку формату документа.

Після отримання кореневого елемента потрібно розв'язати проблему вузла збору статей, на цьому етапі потрібно створити новий список сильних типів, і змінна називається публічною власністю статей.


XmlArrayItemAttribute — це похідний тип, який визначає, що XmlSerializer можна розмістити у серіалізованому масиві. Після створення класу, налагодження та перегляду майже немає великої проблеми.

Давайте поговоримо про десеріалізацію. Коли звичайний користувач WeChat надсилає повідомлення на публічний акаунт, сервер WeChat ПУБЛІКУЄ повідомлення на заповненій URL. Наразі нам потрібно десеріалізувати отримані дані у ті об'єкти, які нам потрібні для зручної роботи та зберігання. Зазвичай ми використовуємо Request.Form["param"], щоб отримати дані Post, і багато розробників виявляють, що дані POST не мають параметрів, переглядаючи документацію інтерфейсу, і вони плутаються та не знають, як їх отримати. Тут ми використовуємо Request.InputStream для отримання вмісту вхідного тіла HTTP-сутності. Для отримання додаткової інформації, будь ласка, ознайомтеся з цією статтею: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Десеріалізація Тут я написав простий приклад коду на C#.


Тут, оскільки це рядок, який безпосередньо копіює xml-зразки даних, що відповідають на графічне повідомлення, використовується перевантаження Deserialize (TextReader textReader), звісно, ви можете безпосередньо використовувати перевантаження Deserialize (поток потоку) у проєкті.

Для запитань щодо серіалізації XML дивіться цю статтю на MSDN про XML та SOAP-серіалізацію

Я розмістив відповідний файл коду екземпляру на github у XmlSerializerExample

Пишіть поспіхом і просто залиште позначок. Я не їв достатньо вночі і тепер відчуваю нудоту. Мені треба швидко лягати спати.
Якщо є якісь помилки, будь ласка, виправте їх.

Оригінальне посилання:

http://imr3.com/tech/weixin-message-api-serialize





Попередній:XML-десеріалізація У XML-документі (1, 2) є помилка.
Наступний:[вихідний код].net/c# Інтелектуальний чат WeChat сканування інформації про місцезнаходження ГІС для отримання функції зображення
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com