C# 如何忽略空的或未设置的json键?
我有这样一个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
{
"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代码,它就是一个副本。