かるあ のメモ

アクセスカウンタ

help リーダーに追加 RSS HttpWebRequest を使用して ASP.NET AJax のメソッドを呼び出す(2)

<<   作成日時 : 2007/05/28 00:45   >>

トラックバック 1 / コメント 0

前回の記事に追記しようかと思ったのですが、長くなりそうですので別に投稿します。
JSON 形式のデータを .Net のデータ型にデシリアライズするのに ASP.NET Ajax の JavaScriptConverter が使えそうだな〜ということで少し調べてみました。

とりあえず簡単なテキストをデシリアライズしたらうまくいったので、

Dim serializer As New JavaScriptSerializer()
Dim member As ComuplusMember = serializer.Deserialize(Of ComuplusMember)("{Id:""karua"", WebSiteurl:""http://karua.at.webry.info""}")


調子よく前回取得した JSON の文字列を List(Of ComuplusMember) に突っ込んだんですが。。。
JSON の文字列
[{"__type":"WebService+ComuplusMember","Id":"Fujiwo","WebSiteurl":"http://www.shos.info/"},
{"__type":"WebService+ComuplusMember","Id":"hara","WebSiteurl":"http://www.codeseek.net/"},
                ... 略 ...
]


デシリアライズコード
Dim jsonString As String = GetAllMembers()
Dim serializer As New JavaScriptSerializer()
Dim members As List(Of ComuplusMember) = serializer.Deserialize(Of List(Of ComuplusMember))(jsonString)

Public Class ComuplusMember
    Public Sub New()
    End Sub
    Public Id As String
    Public WebSiteurl As String
End Class


こんな例外が発生しました。
System.ArgumentNullException はハンドルされませんでした。
  Message="値を Null にすることはできません。
パラメータ名: type"
  ParamName="type"
  Source="mscorlib"
  StackTrace:
      略


どうも JSONメッセージ中の __type の "__" が悪さをしているっぽい
デシリアライズ中に意味のわからない文字列は無視するっぽいのでとりあえずこんなのでもどうにかなる。
Dim jsonString As String = GetAllMembers()
Dim serializer As New JavaScriptSerializer()
jsonString = jsonString.Replace("__", "")
Dim members As List(Of ComuplusMember) = serializer.Deserialize(Of List(Of ComuplusMember))(jsonString)


うーん、これでいいのか?????????
クライアント側で System.Web.Extension を参照設定しないといけないのも少し気になる。

設定テーマ

注目テーマ 一覧

月別リンク

トラックバック(1件)

タイトル (本文) ブログ名/日時
HttpWebRequest を使用して ASP.NET AJax のメソッドを呼び出す(1)
ASP.NET AJax では WebService のメッセージ通信に XML/SOAP の他に JSON が利用されています。 JSON を使用することで XML を使用するよりはメッセージ量を減らすことができます。 ただ、Javascript と WebService は JSON で簡単にやり取りできるのに .NET の世界に来ると未だに XML でのやり取りしか用意されていません。 今回は System.Net.HttpWebRequest を使用して JSON メッセージ... ...続きを見る
かるあ のメモ
2007/06/23 12:11

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文