【发布时间】:2013-11-15 01:06:39
【问题描述】:
我正在使用 Newtonsoft.Json 从 web api 读取 Json
他们的大部分页面都很好。
但其中一些可能包含一些我无法解析的特殊字符。
代码如下:
WebClient client = new WebClient();
String strJson = client.DownloadString(url);
JObject jObject = JObject.Parse(strJson );
然后我尝试转换为 UTF8 还是不行:
WebClient client = new WebClient();
String strJson = client.DownloadString(url);
byte[] utf8Bytes = Encoding.UTF8.GetBytes(strJson);
string safeJsonStr= Encoding.UTF8.GetString(utf8Bytes);
JObject jObject = JObject.Parse(safeJsonStr);
请帮忙!
谢谢
【问题讨论】:
-
我注意到这种类型的错误通常与字符串末尾的附加“}”相关联。我做了一个 hack 解决方法,在其中捕获了异常,尝试使用从字符串中删除的最后一个非空白字符再次解析它。
-
好计划大卫!我会去检查错误报告,看看哪个字符破坏了我的程序,然后将其删除。如果我将来得到更多,我将只编写代码来读取异常并自动删除字符。
-
当你说特殊字符时,你得到了什么字符?你检查过源 JSON 是否真的有效吗?有时它只是开头的 BOM,您可以手动跳过。顺便说一句,您应该通过响应标头确定编码类型。