【问题标题】:C# JSON After parsing a value an unexpected character was encounteredC# JSON 解析值后遇到意外字符
【发布时间】: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,您可以手动跳过。顺便说一句,您应该通过响应标头确定编码类型。

标签: c# json parsing


【解决方案1】:

嗯,终于找到办法了。

我看到有一些特殊的语言,我觉得我需要解码或编码。

然后我终于发现这是可行的:

            client.Encoding = System.Text.Encoding.UTF8;

            strJson = client.DownloadString(url); 

【讨论】:

  • 嘿,本尼。我的客户似乎也有同样的问题。我无法重现它,但其中一些收到完全相同的错误。你能帮我重现吗?是什么角色造成的?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多