【问题标题】:Deserializing JSON in .NET - Property with forward slashes在 .NET 中反序列化 JSON - 带有正斜杠的属性
【发布时间】:2020-02-04 22:08:09
【问题描述】:

我有这样的 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&lt;Entities.Generated.Meta&gt;(json); 对 Items 属性的引用为空。

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

【问题讨论】:

    标签: c# json .net-core json-deserialization


    【解决方案1】:

    您的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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2016-07-16
      • 2021-11-19
      • 2012-11-16
      相关资源
      最近更新 更多