我的WebApi返回UTF16 JSON结果。试图使用JSON.NET反序列化此操作会导致错误:
解析值时遇到的意外字符:。路径'',第0行,位置0。
我查看了带有设置的反序列化方法,看起来没有指定编码的选项。UTF8被硬编码到解析器中?
似乎JSON.NET不能反序列化UTF16,要么服务器必须用UTF8响应,要么使用者需要将结果从16重新编码到8。这2是分辨率吗?
发布于 2015-09-23 06:54:58
我使用System.Net.WebClient来调用服务。1 googling结果提示需要处理正在压缩的内容,并且我的服务响应在标题中显示了gzip。
通过切换到使用System.Net.WebRequest,问题解决了,我不需要关注压缩的内容。
因此,原因可能与JSON.NET或编码无关,而是由于使用System.Net.WebClient时压缩的内容。
发布于 2022-01-23 14:50:14
我也遇到了类似的问题,但原因是编码。我的JSON文件在UTF-16le (Unicode)中。因此,在读取数据时,我们只需要提供Unicode编码。
var jsonString = System.IO.File.ReadAllText("c://filepath", Encoding.Unicode);
var data = JsonConvert.DeserializeObject<YourModel>(jsonString);https://stackoverflow.com/questions/32730520
复制相似问题