。NET中的反序列化JSON-具有正斜杠的属性

问题描述 投票:0回答:1

我有这样的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);对Items属性具有空引用。

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

c# json .net-core json-deserialization
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.