Nedávno chcel brat Shuang vyskúšať vývojársky režim verejného účtu WeChat a požiadal o účet na verejnej platforme WeChat. Potom som si pozrel rozhranie otvorenej platformy, dal odkaz do skupiny, WeChat bol v poslednej dobe prehriaty, aj ja som sa zvedavo pridal.
Kliknite na sprievodcu správovým rozhraním, kde vidíme, že rozhranie správ verejnej platformy používa XML na interakciu s dátami. Pre pohodlie manipulácie s dátami zvyčajne serializujeme a deserializujeme XML. Serializácia je proces konverzie stavu objektu do formátu, ktorý je možné udržiavať alebo prenášať. Opakom serializácie je deserializácia, ktorá premieňa prúdy na objekty. Tieto dva procesy spolu umožňujú jednoduché ukladanie a prenos dát.
Najprv sa porozprávajme o serializácii, vezmime si napríklad XML formát odpovedania na grafické správy, pretože tento formát v podstate zahŕňa všetky vyššie uvedené správy push a odpoveď na správu.
Keď <xml><Articles>dostaneme dátovú odpoveď z verejnej platformy POST na vrátenie výstupu, používame XML serializáciu, teda na konverziu dátového objektu odpovede do XML formátu poskytovaného verejnou platformou, čo je pohodlné na prenos dát. Serializácia Tu som napísal jednoduchý príkladový kód v C#. Aby som získal serializovaný reťazec, Neexistuje priamy výstup, samozrejme vo vašom projekte môžete priamo použiť Response.Output.
Tu sa uvádza, že názov koreňového prvku XML generovaného metódou Serialize triedy XmlSerializer predvolene zodpovedá názvu triedy serializácie. Prečo sa cítim tak zmätene, keď čítam túto vetu? A nechcem používať bezvýznamné slovo ako xml ako názov triedy, potrebujeme pridať značku vlastnosti do triedy serializácie [XmlRoot(ElementName = "xml")], aby sme špecifikovali, že generovaný XML prvok sa volá xml. Ak tento tag nepridáte, ak názov triedy serializácie nezodpovedá názvu koreňového prvku XML, vždy dostanete chybu formátu dokumentu.
Po získaní koreňového prvku musíme vyriešiť problém zberného uzla článkov, v tomto momente potrebujeme vytvoriť nový zoznam silných typov a premenná sa nazýva verejné vlastníctvo článkov.
XmlArrayItemAttribute je odvodený typ, ktorý špecifikuje, že XmlSerializer môže byť umiestnený do serializovaného poľa. Po vytvorení triedy, ladení a prezretí ju v podstate nie je žiadny veľký problém.
Poďme sa porozprávať o deserializácii. Keď bežný používateľ WeChatu pošle správu na verejný účet, server WeChat ju ZVEREJNÍ na vyplnenú URL. V súčasnosti potrebujeme deserializovať prijaté dáta na objekty, ktoré potrebujeme pre jednoduchú prevádzku a ukladanie. Zvyčajne používame Request.Form["param"] na získanie údajov Postu a mnohí vývojári zistia, že dáta POST nemajú žiadne parametre pri prezeraní dokumentácie rozhrania, sú zmätení a nevedia, ako tieto dáta získať. Tu používame Request.InputStream na získanie obsahu prichádzajúceho HTTP entity body. Pre viac informácií si pozrite tento článok: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserializácia Tu som napísal jednoduchý ukážkový kód v C#.
Tu, keďže ide o reťazec, ktorý priamo kopíruje xml vzorkové dáta odpovedajúce na grafickú správu, sa používa preťaženie Deserialize (TextReader textReader), samozrejme, môžete priamo použiť preťaženie Deserialize (Stream stream) v projekte.
Pre otázky týkajúce sa serializácie XML si pozrite tento článok na MSDN o serializácii XML a SOAP
Relevantný súbor inštancie som dal na github na XmlSerializerExample
Píšte rýchlo a jednoducho zanechajte značku. V noci som nejedol dosť a teraz sa cítim nevoľno. Musím rýchlo ísť spať. Ak sú tam nejaké chyby, prosím, opravte ich.
Pôvodný odkaz:
http://imr3.com/tech/weixin-message-api-serialize
|