Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 23922|Atsakyti: 0

[Šaltinis] .net/c# "WeChat" viešosios platformos pranešimų sąsajos gairės Serializavimas ir deserializavimas

[Kopijuoti nuorodą]
Paskelbta 2016-08-23 17:07:02 | | |
Neseniai brolis Shuangas norėjo išbandyti "WeChat" viešosios paskyros kūrėjo režimą ir pateikė paraišką dėl paskyros "WeChat" viešojoje platformoje. Tada nuėjau pažiūrėti atviros platformos sąsajos vadovo, jis įdėjo nuorodą į grupę, "WeChat" neseniai buvo perkaitęs, aš taip pat smalsiai spustelėjau.

Spustelėkite pranešimų sąsajos vadovą, pamatysime, kad viešosios platformos pranešimų sąsaja duomenų sąveikai naudoja XML. Manipuliavimo duomenimis patogumui paprastai serializuojame ir deserializuojame XML. Serializacija yra objekto būsenos konvertavimo į formatą, kurį galima išlaikyti arba perkelti, procesas. Serializacijos priešingybė yra deserializacija, kuri srautus paverčia objektais. Šie du procesai kartu palengvina duomenų saugojimą ir perdavimą.

Pirmiausia pakalbėkime apie serializaciją, kaip pavyzdį paimkime XML formatą, skirtą atsakyti į grafinius pranešimus, nes šis formatas iš esmės apima visus aukščiau pateiktus pranešimų siuntimo ir pranešimo atsakymus.


Kai <xml><Articles>gauname duomenų atsakymą iš viešosios platformos POST, kad grąžintume išvestį, naudojame XML serializaciją, tai yra, konvertuojame atsakymo duomenų objektą į viešosios platformos pateiktą XML duomenų formatą, kuris yra patogus duomenims perduoti. Serializacija Čia parašiau paprastą pavyzdinį kodą C#. Norėdami gauti nuoseklią eilutę, Tiesioginio rezultato nėra, žinoma, jūsų projekte galite tiesiogiai Response.Output.


Čia minima, kad XML šakninio elemento, sugeneruoto XmlSerializer klasės Serialize metodu, pavadinimas pagal numatytuosius nustatymus yra serializacijos klasės pavadinimas. Kodėl aš jaučiuosi toks liežuvis, kai aš skaitau šį sakinį? Ir aš nenoriu naudoti beprasmio žodžio kaip xml kaip klasės pavadinimas, mes turime pridėti ypatybės žymą į serializacijos klasę [XmlRoot(ElementName = "xml")], kad nurodytume, kad sugeneruotas XML elementas yra pavadintas xml.
Jei neįtrauksite šios žymės, jei jūsų serializacijos klasės pavadinimas neatitinka XML šakninio elemento pavadinimo, visada gausite dokumento formato klaidą.

Gavę šakninį elementą, turime išspręsti straipsnių surinkimo mazgo problemą, šiuo metu turime sukurti naują stiprių tipų sąrašą, o kintamasis vadinamas straipsniais viešąja nuosavybe.


XmlArrayItemAttribute yra išvestinis tipas, nurodantis, kad XmlSerializer galima įdėti į nuoseklų masyvą. Sukūrus klasę, derinant ir pažvelgus į ją, iš esmės nėra didelių problemų.

Pakalbėkime apie deserializaciją. Kai paprastas "WeChat" vartotojas siunčia pranešimą į viešąją paskyrą, "WeChat" serveris PASKELBS pranešimą užpildytu URL. Šiuo metu turime deserializuoti gautus duomenis į objektus, kurių mums reikia lengvam valdymui ir saugojimui. Paprastai mes naudojame Request.Form["param"], kad gautume įrašo duomenis, ir daugelis kūrėjų pastebi, kad POST duomenys neturi parametrų, žiūrėdami į sąsajos dokumentaciją, ir jie yra sutrikę ir nežino, kaip gauti duomenis. Čia naudojame Request.InputStream, kad gautume gaunamo HTTP objekto turinį. Norėdami gauti daugiau informacijos, skaitykite šį straipsnį: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserializacija Čia parašiau paprastą kodo pavyzdį C#.


Čia, kadangi tai yra eilutė, kuri tiesiogiai kopijuoja xml pavyzdinius duomenis, kurie atsako į grafinį pranešimą, naudojama Deserialize (TextReader textReader) perkrova, žinoma, projekte galite tiesiogiai naudoti Deserialize (Stream stream) perkrovą.

Jei turite klausimų apie XML serializavimą, skaitykite šį straipsnį MSDN apie XML ir SOAP serializavimą

Aš įdėjau atitinkamą egzemplioriaus kodo failą į github ne XmlSerializerExample

Rašykite skubėdami ir tiesiog pažymėkite. Naktį nevalgiau pakankamai ir dabar pykina. Turiu greitai eiti miegoti.
Jei yra klaidų, prašome jas ištaisyti.

Originali nuoroda:

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





Ankstesnis:XML deserializacija XML dokumente (1, 2) įvyko klaida.
Kitą:[šaltinio kodas].net/c# "WeChat" išmanusis pokalbis GIS vietos informacijos nuskaitymas, kad gautumėte paveikslėlio funkciją
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com