2012-03-05 35 views
3

だから、私は、文字列のメンバーの一人が、それらに引用符( ")とアポストロフィ( ')のような文字を持っているJSONオブジェクトを持っている。デシリアライズJSON文字列は

このJSONオブジェクトが返されます(私はコントロールの上に持っていない)サードパーティのAPIによって、これは私がこのAPIを呼び出す方法です:。

var client = new WebClient(); 
var data = new NameValueCollection();    
var result = client.UploadValues(url, data); 
MemoryStream ms = new MemoryStream(result); 

だから、私はそうのように、この文字列をdeserialiseしようとすると:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyClass)); 
MyClass obj= serializer.ReadObject(ms) as MyClass; 
ms.Close(); 

私が手エラーt "{"予期しない文字 '&'が発生しました。 "}"

Iは、以下のコードを使用して、文字列にバイト配列を読んだとき、私は アンパサンドとアポストロフィ文字は「&#039」として符号化されていることがわかり「& QUOT;」。

MemoryStream ms2 = new MemoryStream(result); 
ms2.Seek(0, SeekOrigin.Begin); 
StreamReader sr = new StreamReader(ms2); 
string s = sr.ReadToEnd(); 

デシリアライザでは、JSON文字列のアンパサンド文字が気に入らないようです。私は何を間違えているのですか?

+0

レスポンスをhtmlでデコードしようとしましたか? get要求から返されている場合は、この種の動作を取得できます。 – Gats

+0

はい、エンコードされた引用符を実際の引用符にデコードするだけで、JSONも分割されます。あなたがしているならば... – ashwnacharya

答えて

0

http://json.org/ amperstandsと二重引用符をシリアル化するための正しい方法ではないので...あなたは私はあなたがしてデコードおよびにaddslashes ...または検索をHTMLと交換することをお勧めすることを制御することはできません場合は...

関連する問題