2012-03-05 3 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 hat говорит «{« Обнаружен неожиданный персонаж »& '."} ".

Когда я прочитал массив байтов в строку, используя следующий код, я вижу, что амперсандом и апостроф символы кодируются как «& # 039» и «& Quot;».

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

Так выглядит десериализатор не любит символы амперсанда в строке JSON. Что я делаю не так?

+0

Вы пробовали декодировать html ответ? Если он возвращается из запроса на получение, вы можете получить такое поведение. – Gats

+0

Да, он просто декодирует закодированный символ котировки фактической цитате, и это также разрушает JSON. Черт, если вы ... – ashwnacharya

ответ

0

http://json.org/ , потому что это не правильный способ сериализации amperstands и двойные кавычки ... Если вы не имеете никакого контроля над этим я предлагаю вам HTML декодирования и затем addslashes ... Или Найти и заменить ...

Смежные вопросы