所以,我有一个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字符串中的&符号。我做错了什么?
答案 0 :(得分:0)
http://json.org/ 因为不是序列化大括号和双引号的正确方法......如果你无法控制,我建议你使用html解码然后添加一个...:或者找一个替换......