反序列化包含引号和撇号的JSON字符串

时间:2012-03-05 15:11:32

标签: c# .net json serialization deserialization

所以,我有一个JSON对象,其中一个字符串成员中包含引号(“)和撇号(')等字符。

此JSON对象由第三方API(我无法控制)返回。这是我调用此API的方式:

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();

我收到一条错误消息“{”遇到意外字符'&'。}}“。

当我使用以下代码将字节数组读入字符串时,我看到了 &符号和撇号字符编码为'&#039'和'& “;。

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

所以看起来Deserializer不喜欢JSON字符串中的&符号。我做错了什么?

1 个答案:

答案 0 :(得分:0)

http://json.org/ 因为不是序列化大括号和双引号的正确方法......如果你无法控制,我建议你使用html解码然后添加一个...:或者找一个替换......