C# Json.net 分析值时遇到意外字符:



我在尝试从 url 获取 Json 格式时收到上述错误。

public class Product
{
public int Id { get; set; }
[JsonProperty("externalId")]
public int ExternalId { get; set; }
[JsonProperty("code")]
public string Code { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("barcode")]
public int Barcode { get; set; }
[JsonProperty("retailPrice")]
public double RetailPrice { get; set; }
[JsonProperty("wholesalePrice")]
public double WholesalePrice { get; set; }
[JsonProperty("discount")]
public double Discount { get; set; }
}
public class Products
{
public List<Product> GetProducts { get; set; }
}

在我的控制器中,我有:

public async Task<ActionResult> Index()
{
string url = "https://cloudonapi.oncloud.gr/s1services/JS/updateItems/cloudOnTest";
HttpClient client = new HttpClient();
var httpResponseMessage = await client.GetAsync(url);
httpResponseMessage.EnsureSuccessStatusCode();
string jsonResponse = await httpResponseMessage.Content.ReadAsStringAsync();
var list = JsonConvert.DeserializeObject<Products>(jsonResponse);
return View(list);
}

我在解析值时不断遇到意外字符:。路径 '',第 0 行,位置 0。错误

所以。u001f表示您收到了字节1F在具有编码8B的扩展 ASCII 范围内。b是带有编码08的 ASCII 退格字符。

1F 8B是GZIP的幻数(08是压缩方法:DEFLATE)。

因此,服务器是损坏的服务器之一,它会给您一个 gzip 压缩的响应,即使您没有说您可以接受 gzip 压缩的响应。

您可以告诉HttpClient自动解压缩 gzip 压缩的响应:

HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using var client = new HttpClient(handler));
var httpResponseMessage = await client.GetAsync(url);
// ...

最新更新