2012-02-08 15 views
1

私はHttpWebRequestメソッドを使用して、返されたデータがjson形式であるはずだった特定のURLのデータを「取得」しています。私のコードはC#でjson形式の返信データを使用する方法は?

WebRequest request = WebRequest.Create("https://xxx.xxxxxxxx.com/xxxxxxx"); 
    request.Method = "GET"; 
    request.ContentType = "application/json"; 
    var response = (HttpWebResponse)request.GetResponse(); 
    using (var streamReader = new StreamReader(response.GetResponseStream())) 
    { 
     var responseText = streamReader.ReadToEnd(); 

    } 

responseText値のようなものです私が観察されたように、あなたはそれがJSON形式である見ることができますが、私はJSONオブジェクトとして設定する方法がわからないので

[ 
{ 
"webinarKey":5303085652037254656, 
"subject":"Test+Webinar+One", 
"description":"Test+Webinar+One+Description", 
"organizerKey":73563532324, 
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}] 
}, 
{ 
"webinarKey":9068582024170238208, 
"name":"Test+Webinar+Two", 
"description":"Test Webinar Two Description", 
"organizerKey":73563532324, 
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}] 
} 
] 

ですフィールド値を何かのように得ることができます

string webinarKey=responseText[0].webinarKey; 

私はそうですか?

+0

JSONが表す.NETオブジェクトが必要ですか? – Oded

+1

http://stackoverflow.com/questions/4611031/convert-json-string-to-c-sharp-object –

答えて

0
JavaScriptSerializer ser = new JavaScriptSerializer(); 
MyClass package = null; 
package = ser.Deserialize<MyClass>(item); 

。オブジェクトのプロパティにアクセスできます。

+0

「アイテム」が配列の場合、分割する方法は? –

+0

ser.Deserialize <リスト>(アイテム); – FiveTools

0

JSONパーサ/デシリアライザを使用してレスポンス(JSONを使用したテキスト文字列)を解析する必要があります。たとえば:Json.net

0

http://msdn.microsoft.com/en-us/library/bb412179.aspx

WCFはDataContractJSONDeserializerを持っています。

jsonデータが戻ってくるような "見た目"のプロパティを持つ.netオブジェクトとして型を定義する必要があります。私は実際にあなたのアプリケーションでWCFを使用しているという印象を得ていませんが、とにかくDataContractJSONDeserializerを使用することができます。それを非直列化したい型に指示するだけで、型をDataContract属性でマークする必要があります。

相続人はたくさんの詳細情報

http://msdn.microsoft.com/en-us/library/bb412170.aspx

0

あなたはほとんど常にJavaScriptSerializerクラスを使用して逃げることができます。これには数多くのバリエーションがありますが、これで十分ですが、私は他の回答の提案をすでに見ることができます。このスーツならば、それはSystem.Web.Extensionで容易に使用可能なクラスがあるということであると「第三者のための要件を削除し、

public T Deserialize<T>(
    string input 
) 

一つの利点:つまり、あなたはの署名で、Deserialize<T>方法に見たいと思うでしょうコンポーネント '。

0

この可能性は、JObject instanceを使用することです。あなたはそれを文字列を渡すと、簡単に値を抽出することができます

アイテムはあなたの応答テキストで、MyClassのは、あなたが戻ってきている.NETクラスである
JObject jobj = JObject.Parse(resultString); 
someValue = jobj[0]["webinarKey"]; 
関連する問題