C# 如何忽略空的或未设置的json键?

C# 如何忽略空的或未设置的json键?,c#,json,json.net,C#,Json,Json.net,我有这样一个json: { "user": [ { "det": [ { "Code": "9", "Description": "Update" } ], "arts": [] } ] } 现在,在某些情况下,我需要的json包含键arts,而在另一种情况下,没有提供该键,因此我只有带det键的json,如下所示: { "user": [ { "det": [ { "Code": "9", "Descr

我有这样一个json:

{
"user": [
{
  "det": [
    {
      "Code": "9",
      "Description": "Update"
    }
  ],
  "arts": []
 }
]
}
现在,在某些情况下,我需要的json包含键
arts
,而在另一种情况下,没有提供该键,因此我只有带
det
键的json,如下所示:

{
"user": [
{
  "det": [
    {
      "Code": "9",
      "Description": "Update"
    }
  ]
 }
]
}
这是我的反序列化类:

public class Det
{
   public string Code { get; set; }
   public string Description { get; set; }
}

public class Arts
{
   public string ID { get; set; }
   public string CON3 { get; set; }
}

public class user
{
   public List<Det> det { get; set; }
   public List<Arts> arts {get; set; }
}

public class RootObject
{
    public List<Det> user { get; set; }
}
公共类数据
{
公共字符串代码{get;set;}
公共字符串说明{get;set;}
}
公共艺术课
{
公共字符串ID{get;set;}
公共字符串CON3{get;set;}
}
公共类用户
{
公共列表det{get;set;}
公共列表艺术{get;set;}
}
公共类根对象
{
公共列表用户{get;set;}
}
因此,当我收到第一个json时,代码运行良好,但当我收到第二个json时,代码出现异常:

无法反序列化当前JSON对象


这是因为没有提供
arts
键,但只有
det
键。所以有一种方法可以告诉我的代码忽略
艺术
,如果没有设置?我该怎么做?谢谢。

您使用什么进行反序列化?使用google,我发现如果您使用的是“
Jackson
”,对于“
Json.net
”@Quantic,我使用的是
Json.net
,我会查看一下seconds链接。好的,我将第二个链接修改为一个更相关的链接,所以如果您在我更改它之前检查过,请仔细检查它。@Quantic我试图将此属性:
[JsonProperty](Required=Required.AllowNull)
在这一行上方:
public List arts{get;set;}
但仍然得到相同的错误。无法在类声明中直接管理它?您可以发布用于反序列化的代码吗?我刚刚尝试了
var test1=JsonConvert.DeserializeObject(json2)
并且工作正常。在本例中,
json2
是一个字符串,如果您发布了第二个json代码,它就是一个副本。您使用什么进行反序列化?使用谷歌,我发现您是否使用了“
Jackson
”,以及“
json.net
”@Quantic我正在使用Json.net我将查看seconds链接。好的,我将第二个链接修改为一个更相关的链接,所以请仔细检查,以防在我更改它之前检查。@Quantic我试图将此属性:
[JsonProperty(Required=Required.AllowNull)]
放在此行上方:
公共列表艺术{get;set;}
但仍然会出现相同的错误。不可能在类声明中直接管理它?您可以发布用于反序列化的代码吗?我刚刚尝试了
var test1=jsoninvert.DeserializeObject(json2);
并且效果很好。在这种情况下,
json2
是一个字符串,如果您发布了第二个json代码,它就是一个副本。