JSON.NET反序列化UTF16



我的WebApi返回UTF16 JSON结果。尝试使用JSON将其反序列化。. NET导致错误:

解析值时遇到意外字符:路径",行0,位置0.

我查看了带有设置的反序列化方法,看起来没有指定编码的选项。UTF8是硬编码到解析器?

好像是JSON。NET不能反序列化UTF16,要么服务器必须用UTF8响应,要么消费者需要将结果从16重新编码为8。这两个只是解决方案吗?

我使用System.Net.WebClient来调用服务。1的谷歌搜索结果提示需要解决内容被压缩,我的服务响应在标题

中显示gzip

通过切换到使用System.Net。WebRequest,问题解决了,我不需要担心压缩的内容。

所以原因可能与JSON无关。

使用System.Net.WebClient时,由于压缩的内容。

我得到了一个类似的问题,但原因是编码。我的JSON文件是UTF-16 LE (Unicode)。因此,在读取数据时,我们只需要提供Unicode编码。

var jsonString = System.IO.File.ReadAllText("c://filepath", Encoding.Unicode);
var data = JsonConvert.DeserializeObject<YourModel>(jsonString);

相关内容

  • 没有找到相关文章