c# - 反序列化其中包含引号和撇号的 JSON 字符串

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

我收到一条错误消息,内容为“{"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/

相关文章:

c# - Visual Studio 2013 自定义测试适配器 : how to debug?

c# - 如何将更新传播到 Colectica DDI 项目图表中的所有项目?

c# - 委托(delegate)会导致内存泄漏吗? GC.TotalMemory(true) 似乎表明如此

javascript - 将 php 数组编码为 js 变量缺少一些数据?

c# - ComboBox 的水印行为

c# - 尝试添加一对多关系时出现 NullReferenceException

.net - 如何告诉我的 .NET 应用程序要从哪个 IP 地址请求?

c# - Visual Studio 2019 中的 "ildasm"在哪里?

arrays - 多个查询结果在一个结果json

javascript - jQuery .html() 大负载