我的WebApi返回UTF16 JSON结果。尝试使用JSON将其反序列化。. NET导致错误:
解析值时遇到意外字符:路径",行0,位置0.
我查看了带有设置的反序列化方法,看起来没有指定编码的选项。UTF8是硬编码到解析器?
好像是JSON。NET不能反序列化UTF16,要么服务器必须用UTF8响应,要么消费者需要将结果从16重新编码为8。这两个只是解决方案吗?
我使用System.Net.WebClient来调用服务。1的谷歌搜索结果提示需要解决内容被压缩,我的服务响应在标题
中显示gzip通过切换到使用System.Net。WebRequest,问题解决了,我不需要担心压缩的内容。
所以原因可能与JSON无关。
我得到了一个类似的问题,但原因是编码。我的JSON文件是UTF-16 LE (Unicode)。因此,在读取数据时,我们只需要提供Unicode编码。
var jsonString = System.IO.File.ReadAllText("c://filepath", Encoding.Unicode);
var data = JsonConvert.DeserializeObject<YourModel>(jsonString);