在 .NET 中反序列化 JSON - 属性 带正斜杠

Deserializing JSON in .NET - Property with forward slashes

我有 JSON 像这样的我正在尝试反序列化为 .NET Core 3.1 C# 对象。

{
  "meta": {
    "/workers/assignments/myItems": {
      "codeList": {
        "listItems": [
          {
            "codeValue": "KEY1",
            "shortName": "This is item 1"
          },
          {
            "codeValue": "KEY2",
            "shortName": "This is item 2"
          }
        ]
      }
    }
  }
}

我的 类 看起来像这样:

 class Meta {
        [JsonProperty("/workers/assignments/myItems")]
        public ItemsMeta Items {get;set;}
    }

    class ItemsMeta {
        public CodeList codeList { get; set; }
    }

    class CodeList {
        public List<ListItem> listItems { get; set; }
    }

    public class ListItem {
        public string codeValue { get; set; }
        public string shortName { get; set; }
        public string longName { get; set; }
    }

但是 var meta = JsonConvert.DeserializeObject<Entities.Generated.Meta>(json); 对项目 属性 有一个空引用。

我做错了什么?如果没有自定义 JSON 解析器,这可能吗?我已经尝试过 Newtonsoft 和 System.Text.Json.

您的 meta 标签在另一个对象内或 RootObject。将其添加到您的模型并将您的 json 反序列化到该对象:

public class Meta
{
    [JsonProperty("/workers/assignments/myItems")]
    public ItemsMeta Items { get; set; }
}

public class ItemsMeta
{
    public CodeList codeList { get; set; }
}

public class CodeList
{
    public List<ListItem> listItems { get; set; }
}

public class ListItem
{
    public string codeValue { get; set; }
    public string shortName { get; set; }
    public string longName { get; set; }
}

public class Rootobject
{
    public Meta Meta { get; set; }
}

现在反序列化:

var root = JsonConvert.DeserializeObject<Rootobject>(json);