Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 23922|Svar: 0

[Källa] .net/c# WeChat Public Platform Message Interface Riktlinjer Serialisering och deserialisering

[Kopiera länk]
Publicerad på 2016-08-23 17:07:02 | | |
Nyligen ville bror Shuang prova utvecklarläget för WeChats offentliga konto, och han ansökte om ett konto på WeChats offentliga plattform. Sedan gick jag för att se gränssnittsguiden för den öppna plattformen, han lade in en länk i gruppen, WeChat har blivit överhettat på sistone, jag klickade också in nyfiket.

Klicka på meddelandegränssnittets guide, vi kan se att meddelandegränssnittet på den publika plattformen använder XML för datainteraktion. För bekvämligheten av datamanipulation serialiserar och deserialiserar vi vanligtvis XML. Serialisering är processen att konvertera ett objekts tillstånd till ett format som kan underhållas eller överföras. Motsatsen till serialisering är deserialisering, som omvandlar strömmar till objekt. Dessa två processer kombineras för att göra det enkelt att lagra och överföra data.

Låt oss prata om serialisering först, låt oss ta XML-formatet för att svara på grafiska meddelanden som exempel, eftersom detta format i princip inkluderar all ovanstående meddelandepush och meddelandesvar.


När <xml><Articles>vi tar emot datasvaret från den publika plattformen POST för att returnera utdatan använder vi XML-serialisering, det vill säga för att konvertera svarsdataobjektet till XML-dataformatet som tillhandahålls av den publika plattformen, vilket är praktiskt för dataöverföring. Serialisering Här skrev jag en enkel exempelkod i C#. För att erhålla den serialiserade strängen, Det finns ingen direkt output, självklart kan du i ditt projekt direkt Response.Output.


Det nämns här att namnet på XML-rotelementet som genereras av metoden Serialize i XmlSerializer-klassen som standard är namnet på serialiseringsklassen. Varför känner jag mig så tungvriden när jag läser den här meningen? Och jag vill inte använda ett meningslöst ord som xml som klassnamn, vi behöver lägga till en egenskapstagg till serialiseringsklassen [XmlRoot(ElementName = "xml")] för att specificera att det genererade XML-elementet heter xml.
Om du inte lägger till denna tagg, om ditt serialiseringsklassnamn inte motsvarar XML:s rotnamn, kommer du alltid att få ett felmeddelande i dokumentformatet.

Efter att ha fått rotelementet behöver vi lösa problemet med samlingsnoden av artiklar, vid denna tidpunkt behöver vi skapa en ny lista över starka typer, och variabeln kallas artiklar publik egendom.


XmlArrayItemAttribute är en härledd typ som specificerar att XmlSerializer kan placeras i en serialiserad array. Efter att ha skapat klassen, felsökt och tittat på den, finns det i princip inget stort problem.

Låt oss prata om deserialisering. När en vanlig WeChat-användare skickar ett meddelande till det publika kontot, kommer WeChat-servern att POSTA meddelandet till den fyllda URL:en. Just nu behöver vi deserialisera den mottagna datan till de objekt vi behöver för enkel drift och lagring. Vanligtvis använder vi Request.Form["param"] för att hämta data från Post, och många utvecklare upptäcker att data från POST inte har några parametrar när de tittar på gränssnittsdokumentationen, och de är förvirrade och vet inte hur de ska få tag på datan. Här använder vi Request.InputStream för att hämta innehållet i den inkommande HTTP-entitetskroppen. För mer information, se denna artikel: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserialisering Här skrev jag en enkel exempelkod i C#.


Här, eftersom det är en sträng som direkt kopierar xml-exempeldata som svarar på det grafiska meddelandet, används överbelastningen av Deserialize (TextReader textReader), och naturligtvis kan du direkt använda överbelastningen av Deserialize (Stream stream) i projektet.

För frågor om XML-serialisering, se denna artikel på MSDN om XML- och SOAP-serialisering

Jag har lagt upp den relevanta instanskodfilen på github på XmlSerializerExample

Skriv snabbt och gör bara ett märke. Jag åt inte tillräckligt på kvällen och nu mår jag illa. Jag måste gå och lägga mig snabbt.
Om det finns några misstag, vänligen rätta dem.

Originallänk:

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





Föregående:XML-deserialisering Det finns ett fel i XML-dokumentet (1, 2).
Nästa:[källkod].net/c# WeChat intelligent chatt GIS-platsinformation skanning för att få bildfunktionen
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com