所以,我有一个 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();
我收到一条错误消息,内容为“{"Encountered unexpected character '&'."}”。
当我使用以下代码将字节数组读入字符串时,我看到 符号和撇号字符编码为“'”和“& quot ;”。
MemoryStream ms2 = new MemoryStream(result);
ms2.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms2);
string s = sr.ReadToEnd();
所以看起来 Deserializer 不喜欢 JSON 字符串中的 & 字符。我做错了什么?
最佳答案
http://json.org/ 因为这不是序列化 amperstands 和双引号的正确方法...如果您无法控制它,我建议您先进行 html 解码,然后使用 addslashes...或者查找并替换...
关于c# - 反序列化其中包含引号和撇号的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568971/