この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 23922|答える: 0

[出典] .net/c# WeChat 公共プラットフォームメッセージインターフェースガイドライン シリアライズとデシリアライズ

[リンクをコピー]
掲載地 2016/08/23 17:07:02 | | |
最近、双兄はWeChatの公開アカウントの開発者モードを試したいと考え、WeChatの公開プラットフォームにアカウントを申請しました。 それからオープンプラットフォームのインターフェースガイドを見に行き、グループにリンクを貼ってくれました。最近WeChatが過熱しているので、私も興味深そうにクリックしました。

メッセージインターフェースガイドをクリックすると、パブリックプラットフォームのメッセージインターフェースがデータ操作にXMLを使用していることがわかります。 データ操作の便宜のために、通常はXMLをシリアライズとデシリアライズします。 シリアライズとは、オブジェクトの状態を維持または転送可能な形式に変換するプロセスです。 シリアライゼーションの反対はデシリアライゼーションで、ストリームをオブジェクトに変換します。 これら二つのプロセスが組み合わさることで、データの保存や転送が容易になります。

まずはシリアライズについて話しましょう。グラフィックメッセージへの返信のXML形式を例に挙げましょう。この形式は基本的に上記のメッセージプッシュとメッセージの返信をすべて含んでいます。


<xml><Articles>パブリックプラットフォームPOSTから出力を返すデータ応答を受け取った際、XMLシリアライズ、すなわち応答データオブジェクトをパブリックプラットフォームが提供するXMLデータ形式に変換し、データ伝送に便利です。シリアライズ ここではC#で簡単な例コードを書きました。シリアル化された文字列を得るために、 直接的な出力はありません。もちろん、あなたのプロジェクトでは直接Response.Outputを出すこともできます。


ここで述べているのは、XmlSerializerクラスのSerializeメソッドによって生成されるXMLルート要素の名前が、そのシリアル化クラスの名前をデフォルトで使用していることです。 なぜこの文を読むとこんなに舌がねじれる気持ちになるのでしょうか? また、xmlのような意味のない単語をクラス名に使いたくありません。生成されたXML要素がxmlと名付けられるように、シリアライゼーションクラスにプロパティタグ[XmlRoot(ElementName = "xml"])を追加する必要があります。
このタグを追加しなければ、シリアライゼーションクラス名がXMLの根元名に対応していなければ、必ずドキュメントフォーマットエラーが発生します。

根要素を取得した後、Articlesのコレクションノードの問題を解決する必要があります。この時点で新しい強い型のリストを作成する必要があり、その変数はArticlesのパブリックプロパティと呼ばれます。


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(Stream stream)のオーバーロードを直接利用できます。

XMLのシリアライズに関する質問は、MSDNのXMLおよびSOAPシリアライズに関するこの記事をご覧ください

関連するインスタンスコードファイルをgithubのXmlSerializerExampleに掲載しました

急いで書いて、ただ印をつけましょう。 夜に十分に食べられなかったので、今は吐き気を感じています。 早く寝なきゃ。
もし誤りがあれば、ぜひ訂正してください。

元のリンク:

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





先の:XMLのデシリアライズXMLドキュメント(1, 2)にエラーがあります。
次に:[ソースコード].net/c# WeChat インテリジェントチャット GIS位置情報スキャンによる画像機能取得
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com