web-dev-qa-db-ja.com

応答ストリームからJSONデータを取得し、それを文字列として読み取りますか?

POSTリクエストを送信したときに受信するサーバーからの応答を読み取ろうとしています。フィドラーを表示すると、JSON応答であると表示されます。どのようにして通常の文字列にデコードするのですか?できれば外部APIがないC#Winforms。必要に応じて、追加のコード/フィドラー結果を提供できます。

バイオリン弾きと意味不明な画像:

GibberishJSON

意味不明なことは、以下のコードでストリームを読み取ろうとした私の試みから生じました。

Stream sw = requirejs.GetRequestStream(); 
sw.Write(logBytes, 0, logBytes.Length); 
sw.Close(); 
response = (HttpWebResponse)requirejs.GetResponse();
Stream stream = response.GetResponseStream(); 
StreamReader sr = new StreamReader(stream); 
MessageBox.Show(sr.ReadToEnd());
7
Chris Altig

コメントで述べたように、Newtonsoft.Jsonは本当に優れたライブラリであり、使用する価値があります-非常に軽量です。

Microsoftの.NETライブラリのみを使用したい場合は、System.Web.Script.Serialization.JavaScriptSerializerも検討してください。

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObject = serializer.DeserializeObject(sr.ReadToEnd());
16
stames

A)リモートのテキストストリームの取得が十分に文書化されているため、ストリームを実際にdecodeデコードする必要がある(まだ明確化していない)と想定します。 、およびB)デコードされていないJSONストリームでは何もできません。

あなたの最善の行動は、実装することです System.Web.Helpers.Json

using System.Web.Helpers.Json
...
var jsonObj = Json.Decode(jsonStream);
3
brandonscript