没有 JSON 属性 名称的 JSON 响应的对象命名

Object naming for JSON response with no JSON property name

我正在连接到 API,格式为 returns json:

[
  {
    "id":3810,
    "name":"productName",
    "slug":"",
    "permalink":"",
    "date_created":"2022-03-18T14:10:09",
    .
    .
    .

我已将我的根对象设置为:

    public sealed class ProductRoot
    {
        public List<ProductItem> Products { get; set; }
    }

还有我的 ProductItem class 作为:

    public sealed class ProductItem
    {
        [JsonPropertyName("id")]
        public long? Id { get; set; }

        [JsonPropertyName("name")]
        public string? Name { get; set; }

        [JsonPropertyName("slug")]
        public string? Slug { get; set; }

        [JsonPropertyName("permalink")]
        public string? Permalink { get; set; }

        [JsonPropertyName("date_created")]
        public DateTime? DateCreated { get; set; }

        ...

当我尝试反序列化响应时,它似乎在根目录下失败了。

ProductRoot = JsonSerializer.Deserialize<ProductRoot>(result);

错误:

System.Text.Json.JsonException: 'The JSON value could not be converted to Api.Entities.ProductRoot. Path: $ | LineNumber: 0 | BytePositionInLine: 1.'

问题:如果没有 json 属性 进入 JSON 并且它只是返回一个 set/list/array 项目,你叫什么有关系吗?根对象?这会影响 json 的反序列化方式吗?有谁知道如果上面没有与根对象冲突为什么会失败?

您应该直接反序列化为 List

此致,

如果你的对象是:

    public sealed class ProductRoot
    {
        public List<ProductItem> Products { get; set; }
    }

那么你的 json 应该是这样的:

{
"Products": [
  {
    "id":3810,
    "name":"productName",
    "slug":"",
    "permalink":"",
    "date_created":"2022-03-18T14:10:09",
    .
    .
    .