2012-03-05 5 views
3

그래서, 문자열 멤버 중 하나가 그들에 따옴표 (")와 아포스트로피 (')와 같은 문자가 JSON 객체를 가지고있다.역 직렬화 JSON 문자열은

이 JSON 객체가 반환된다 . 내가 지금처럼이 문자열을 deserialise하려고 할 때, 그래서

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

:

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

내가 얻을 타사 API (내가 통제 할 수없는)에 의해이 내가이 API를 호출하는 방법입니다 오류 t 모자에 "{"우연한 문자 '&'이 (가) 발생했습니다. "}". '& quot;'I는 다음과 같은 코드를 사용하여 문자열로 바이트 배열을 읽고

, 난 하는 앰퍼샌드 아포스트로피 문자 '& # 039'과 같이 부호화 참조.

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/ 당신이 제어 할 수없는 경우 난 당신이 다음 addslashes을 디코딩을 HTML과하는 것이 좋습니다 것을 ... amperstands 큰 따옴표를 직렬화 할 수있는 올바른 방법이 아니기 때문에 ... 아니면 찾기 및 바꾸기 ...