5

我正在使用 Newtonsoft.Json 创建 JSON 以更新将项目添加到索引,但是当我 POST 请求时出现以下错误:

{"error":{"code":"","message":"请求无效。","innererror":{"message":"parameters : Unable to translate bytes [E3] at index 752 from specified code页面到 Unicode。\r\n","type":"","stacktrace":""}}}

我知道我正在序列化的数据中的某些字符串中的某些非字母字符会发生错误。字符串数据来自 SQL,所以我猜测与编码有关,我无法弄清楚。

当我检查 JSON 字符串并将其放入手动构造一个在 Fiddler 中具有相同数据的请求时,一切正常。

有谁知道可能是什么问题,以及我该如何解决?

4

1 回答 1

6

经过更多的挖掘,我找到了自己的解决方案。

在序列化选项中添加“StringEscapeHandling.EscapeNonAscii”可以解决问题:

jsonSettings = new JsonSerializerSettings
{
    Formatting = Newtonsoft.Json.Formatting.Indented,
    ContractResolver = new CamelCasePropertyNamesContractResolver(),
    DateTimeZoneHandling = DateTimeZoneHandling.Utc,
    StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
};
于 2015-02-17T12:16:16.903 回答